From a12dd0c653eb942a4c7281ea51741614019de1cc Mon Sep 17 00:00:00 2001 From: Ludovic CANDELLIER Date: Sun, 17 Apr 2022 00:16:36 +0200 Subject: [PATCH] fix on basket --- Gruntfile.js | 2 ++ app/Http/Controllers/Shop/BasketController.php | 3 ++- app/Repositories/Core/User/ShopCart.php | 13 +++++++++++-- app/Repositories/Shop/Offers.php | 13 +++++++------ resources/views/Shop/Baskets/basket.blade.php | 14 ++++++++------ 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 00690669..62c38fd7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -18,6 +18,7 @@ var jsSite = [ jsBase, jsBootstrap, 'node_modules/currency.js/dist/currency.min.js', + 'build/js/plugins/smooth_products/js/smoothproducts.min.js', 'build/js/site.js', ] @@ -25,6 +26,7 @@ var cssSite = [ 'node_modules/bootstrap/dist/css/bootstrap.min.css', 'node_modules/@fortawesome/fontawesome-free/css/all.min.css', 'node_modules/animate.css/animate.min.css', + 'build/js/plugins/smooth_products/css/smoothproducts.css', 'build/css/shadow.css', 'build/css/site.css', ] diff --git a/app/Http/Controllers/Shop/BasketController.php b/app/Http/Controllers/Shop/BasketController.php index 468d8c3c..7e7655f4 100644 --- a/app/Http/Controllers/Shop/BasketController.php +++ b/app/Http/Controllers/Shop/BasketController.php @@ -25,7 +25,8 @@ class BasketController extends Controller { $offer_id = $request->input('offer_id'); $quantity = $request->input('quantity'); - return Offers::addBasket($offer_id, $quantity); + $update = $request->input('update') ?? false; + return Offers::addBasket($offer_id, $quantity, $update); } diff --git a/app/Repositories/Core/User/ShopCart.php b/app/Repositories/Core/User/ShopCart.php index 21cb4af0..37b08dfa 100644 --- a/app/Repositories/Core/User/ShopCart.php +++ b/app/Repositories/Core/User/ShopCart.php @@ -8,9 +8,18 @@ use \Cart; class ShopCart { - public static function add($item) + public static function add($item, $update = false) { - $ret = self::get()->add($item); + if (self::has($item['id'])) { + if ($update) { + self::remove($id); + $ret = self::get()->add($item); + } else { + $ret = self::get()->update($item['id'], ['quantity' => $item['quantity']]); + } + } else { + $ret = self::get()->add($item); + } return [ 'count' => self::count(), 'quantity' => self::getTotalQuantity(), diff --git a/app/Repositories/Shop/Offers.php b/app/Repositories/Shop/Offers.php index 5fb6db2d..05afbf98 100644 --- a/app/Repositories/Shop/Offers.php +++ b/app/Repositories/Shop/Offers.php @@ -7,22 +7,21 @@ use App\Repositories\Core\User\ShopCart; class Offers { - public static function addBasket($offer_id, $quantity = 1) + public static function addBasket($offer_id, $quantity = 1, $update = false) { - if (ShopCart::has($offer_id)) { + if (ShopCart::has($offer_id) && !$quantity) { $ret = ShopCart::remove($offer_id); } $data = $quantity ? Offers::getBasketData($offer_id, $quantity) : false; - return $data ? ShopCart::add($data) : false; + return $data ? ShopCart::add($data, $update) : false; } public static function getFull($id, $sale_channel_id = false) { $sale_channel_id = $sale_channel_id ? $sale_channel_id : SaleChannels::getDefaultID(); - return Offer::with([ + $offer = Offer::with([ 'article.article_nature', 'article.product', - 'article.image', 'tariff' => function ($query) use ($sale_channel_id) { $query->bySaleChannel($sale_channel_id); }, @@ -32,6 +31,8 @@ class Offers 'tariff.price_lists.price_list_values', 'variation', ])->find($id); + $offer->article->image = Articles::getFullImageByArticle($offer->article); + return $offer; } public static function getPrice($id, $quantity = 1, $sale_channel_id = false) @@ -56,7 +57,7 @@ class Offers 'quantity' => (int) $item->quantity, 'price' => $item->price, 'variation' => $offer->variation->name, - 'image' => Articles::getPreviewSrc($offer->article->image), + 'image' => Articles::getPreviewSrc(Articles::getFullImageByArticle($offer->article)), ]; } return $data ?? false; diff --git a/resources/views/Shop/Baskets/basket.blade.php b/resources/views/Shop/Baskets/basket.blade.php index ac17dd52..8305648a 100644 --- a/resources/views/Shop/Baskets/basket.blade.php +++ b/resources/views/Shop/Baskets/basket.blade.php @@ -28,7 +28,7 @@ @endforeach
- @component('components.card', ['class' => 'shadow']) + @component('components.card', ['class' => 'shadow bg-light'])
Tarif appliqué @@ -74,8 +74,10 @@ $('.basket-quantity').change(function() { var offer_id = $(this).data('id'); - quantity = $('.basket-quantity').value; - addBasket(offer_id, quantity, function() { + var quantity = $(this).val(); + console.log("add basket"); + console.log(quantity); + updateBasket(offer_id, quantity, function() { calculatePrice($(this).parents('.basket-row')); calculateTotal(); }); @@ -83,15 +85,15 @@ $('.basket-delete').click(function() { var offer_id = $(this).data('id'); - addBasket(offer_id, 0, function() { + updateBasket(offer_id, 0, function() { $('#basket_offer-' + offer_id).remove(); calculateTotal(); }); }); } - function addBasket(offer_id, quantity, callback) { - var data = {offer_id: offer_id, quantity: 0}; + function updateBasket(offer_id, quantity, callback) { + var data = {offer_id: offer_id, quantity: quantity, update: true}; $.post("{{ route('Shop.Basket.addBasket') }}", data, callback); }