Files
kupshop/bundles/KupShop/GTMBundle/Ecommerce/Checkout.php
2025-08-02 16:30:27 +02:00

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