fix on basket

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

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;