fix on basket

This commit is contained in:
Ludovic CANDELLIER
2022-04-17 00:16:36 +02:00
parent f460865a57
commit 483aa59750
5 changed files with 30 additions and 15 deletions

View File

@@ -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',
]

View File

@@ -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);
}

View File

@@ -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(),

View File

@@ -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;

View File

@@ -28,7 +28,7 @@
@endforeach
</div>
<div class="col-4">
@component('components.card', ['class' => 'shadow'])
@component('components.card', ['class' => 'shadow bg-light'])
<div class="row mb-3">
<div class="col-6 text-uppercase">
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);
}