78 lines
2.0 KiB
PHP
78 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace KupShop\GTMBundle\Ecommerce;
|
|
|
|
use KupShop\GTMBundle\Utils\DataLoaders\PurchaseState;
|
|
|
|
class Checkout extends AbstractEcommerce
|
|
{
|
|
/**
|
|
* @var PurchaseState
|
|
*/
|
|
protected $purchaseStateLoader;
|
|
|
|
/**
|
|
* Specific PageData.
|
|
*/
|
|
public function getData(&$dataContainer)
|
|
{
|
|
/** @var \Cart $cart */
|
|
$cart = $this->pageData['body'];
|
|
|
|
if (empty($cart->products)) {
|
|
return;
|
|
}
|
|
|
|
$dataContainer->event = 'checkout';
|
|
|
|
$step = '';
|
|
$stepName = '';
|
|
$counter = 1;
|
|
foreach ($cart->steps as $step) {
|
|
if (!empty($step['selected'])) {
|
|
$step = $counter;
|
|
$stepName = $cart->stepName;
|
|
break;
|
|
}
|
|
$counter++;
|
|
}
|
|
|
|
$products = [];
|
|
$cart->productList->fetchSections();
|
|
$cart->productList->fetchVariations(true);
|
|
foreach ($cart->products as $product) {
|
|
$p = $this->productLoader->getData($product['product'], $this->view);
|
|
$p->quantity = $product['pieces'];
|
|
if ($p->categoryCurrent == '@breadcrumbs') {
|
|
$p->categoryCurrent = [];
|
|
}
|
|
$products[] = $p;
|
|
}
|
|
|
|
foreach ($cart->orders_charges ?: [] as $charge) {
|
|
$dataContainer->cart->charges[] = [
|
|
'id' => $charge['id'],
|
|
'title' => $charge['title'],
|
|
'price' => $this->priceComputer->getPrice($charge['price']),
|
|
];
|
|
}
|
|
$discounts = $this->purchaseStateLoader->getDiscounts($cart->getPurchaseState());
|
|
|
|
$dataContainer->checkout = [
|
|
'products' => $products,
|
|
'step' => $step,
|
|
'stepName' => $stepName,
|
|
'option' => $cart->getDeliveryType()->name,
|
|
'discounts' => $discounts,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @required
|
|
*/
|
|
public function setPurchaseStateLoader(PurchaseState $purchaseStateLoader): void
|
|
{
|
|
$this->purchaseStateLoader = $purchaseStateLoader;
|
|
}
|
|
}
|