164 lines
4.5 KiB
PHP
164 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Product;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Collection;
|
|
use Gloudemans\Shoppingcart\Facades\Cart;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class BasketController extends Controller
|
|
{
|
|
/**
|
|
* ajout de produit au panier
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return array
|
|
*/
|
|
public function addToCart(Request $request)
|
|
{
|
|
$instance = $request->instance ?? "panier";
|
|
$product = Product::find($request->id);
|
|
Cart::instance($instance);
|
|
Cart::add($product, $request->qty);
|
|
return $this->getCart($instance);
|
|
}
|
|
|
|
/**
|
|
* ajout de plusieurs produits au panier
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return array
|
|
*/
|
|
public function addToCartLot(Request $request)
|
|
{
|
|
$instance = $request->instance ?? "panier";
|
|
Cart::instance($instance);
|
|
$lot = $request->items;
|
|
foreach ($lot as $item) {
|
|
$product = Product::find($item["cartItem"]["id"]);
|
|
Cart::add($product, $item["cartItem"]["qty"]);
|
|
}
|
|
return $this->getCart($instance);
|
|
}
|
|
|
|
/**
|
|
* suppression de produit du panier
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return array
|
|
*/
|
|
public function removeFromCart(Request $request)
|
|
{
|
|
$instance = $request->instance ?? "panier";
|
|
$rowId = $request->rowId;
|
|
Cart::instance($instance);
|
|
Cart::remove($rowId);
|
|
return $this->getCart($instance);
|
|
}
|
|
|
|
/**
|
|
* vidage de panier
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return array
|
|
*/
|
|
public function emptyCart(Request $request)
|
|
{
|
|
$instance = $request->instance ?? "panier";
|
|
Cart::instance($instance);
|
|
Cart::destroy();
|
|
return $this->getCart($instance);
|
|
}
|
|
|
|
/**
|
|
* récupération du panier
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getCartRequest(Request $request)
|
|
{
|
|
$instance = $request->instance ?? "panier";
|
|
Cart::instance($instance);
|
|
return $this->getCart($instance);
|
|
}
|
|
|
|
/**
|
|
* return cart data array
|
|
*
|
|
* @param string $instance
|
|
* @return array
|
|
*/
|
|
public function getCart(string $instance = "panier")
|
|
{
|
|
Cart::instance($instance);
|
|
$dbpanier = new Collection();
|
|
foreach (Cart::content() as $row) {
|
|
$product = $row->model;
|
|
|
|
$product->calculatedPrices = $product->getCalcPrices();
|
|
|
|
$row->setTaxRate($product->tax->rate);
|
|
$row->setDiscountRate($product->discountRate);
|
|
|
|
$cartextendedItem = array(
|
|
'cartItem' => $row,
|
|
'product' => $product
|
|
);
|
|
$dbpanier->add($cartextendedItem);
|
|
}
|
|
|
|
$cartInfos = array(
|
|
"totalTTC" => Cart::total(),
|
|
// Total des taxes.
|
|
'totalTVA' => Cart::tax(),
|
|
// Total sans les taxes.
|
|
'totalHT' => Cart::subtotal(),
|
|
// Poids total des items.
|
|
'totalweight' => Cart::weight(),
|
|
// Total avant taxes et remises.
|
|
'totalHTbefore' => Cart::priceTotal(),
|
|
// Total des remises.
|
|
'totaldiscount' => Cart::discount(),
|
|
// Nb de produits dans le cart.
|
|
'countItems' => Cart::count(),
|
|
);
|
|
|
|
$cartInfosNoPrice = array(
|
|
"totalTTC" => "-.--",
|
|
// Total des taxes.
|
|
'totalTVA' => "-.--",
|
|
// Total sans les taxes.
|
|
'totalHT' => "-.--",
|
|
// Poids total des items.
|
|
'totalweight' => Cart::weight(),
|
|
// Total avant taxes et remises.
|
|
'totalHTbefore' => "-.--",
|
|
// Total des remises.
|
|
'totaldiscount' => "-.--",
|
|
// Nb de produits dans le cart.
|
|
'countItems' => Cart::count(),
|
|
);
|
|
|
|
$cartReturn = array($dbpanier,$cartInfosNoPrice);
|
|
if (config('bosettings.show_prices_authenticated') == "authenticated") {
|
|
{
|
|
if (Auth::guard('customer')->check()) {
|
|
$cartReturn = array($dbpanier,$cartInfos);
|
|
}
|
|
}
|
|
}
|
|
if (config('bosettings.show_prices_guest') == "guest") {
|
|
$cartReturn = array($dbpanier,$cartInfos);
|
|
}
|
|
|
|
return $cartReturn;
|
|
}
|
|
}
|