<?php declare(strict_types=1);
/**
* PremSoft
* Copyright © 2021 Premsoft - Sven Mittreiter
*
* @copyright Copyright (c) 2021, premsoft - Sven Mittreiter (http://www.premsoft.de)
* @author Sven Mittreiter <info@premsoft.de>
*/
namespace Prems\Plugin\PremsOnePageCheckout6\Storefront\Page\Checkout\Subscriber;
use Prems\Plugin\PremsOnePageCheckout6\Core\OnePageCheckout\Lifecycle\InstallUninstall;
use Prems\Plugin\PremsOnePageCheckout6\Core\OnePageCheckout\Storefront\ConfigService;
use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Class CartConvertedSubscriber
* @package Prems\Plugin\PremsOnePageCheckout6\Storefront\Page\Checkout\Subscriber
*/
class CartConvertedSubscriber implements EventSubscriberInterface
{
/**
* @var RequestStack
*/
private $requestStack;
/**
* @var ConfigService
*/
private $configService;
/**
* CartConvertedSubscriber constructor.
* @param RequestStack $requestStack
* @param ConfigService $configService
*/
public function __construct(
RequestStack $requestStack,
ConfigService $configService
) {
$this->requestStack = $requestStack;
$this->configService = $configService;
}
public static function getSubscribedEvents(): array
{
return [
CartConvertedEvent::class => 'onCartConvertedEvent'
];
}
public function onCartConvertedEvent(CartConvertedEvent $event)
{
$data = $event->getConvertedCart();
$opcSaleSettings = $this->configService->getConfig();
if (!$opcSaleSettings->isUseOnePageCheckout() || !$opcSaleSettings->isAdditionalCheckbox()) {
return;
}
$request = $this->requestStack->getCurrentRequest()->request;
if ($request->get(InstallUninstall::ADDITIONAL_CHECKBOX)) {
$data['customFields'][InstallUninstall::ADDITIONAL_CHECKBOX] = true;
} else {
$data['customFields'][InstallUninstall::ADDITIONAL_CHECKBOX] = false;
}
$event->setConvertedCart($data);
}
}