ldc-boutique-cnc/app/Http/Controllers/BasketController.php

165 lines
4.5 KiB
PHP
Raw Permalink Normal View History

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