<?php
/**
* 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\PremsIndividualOffer6\Subscriber;
use Prems\Plugin\PremsIndividualOffer6\Core\Offer\Storefront\ConfigService;
use Prems\Plugin\PremsIndividualOffer6\Core\Offer\Storefront\OfferService;
use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class OrderConvertedSubscriber implements EventSubscriberInterface
{
/**
* @var ConfigService
*/
private $configService;
/**
* @var OfferService
*/
private OfferService $offerService;
public function __construct(
ConfigService $configService,
OfferService $offerService)
{
$this->configService = $configService;
$this->offerService = $offerService;
}
public static function getSubscribedEvents(): array
{
return [
CartConvertedEvent::class => 'onCartConvertedEvent'
];
}
/**
* Flag offer as ordered. Close offer mode
* @param CartConvertedEvent $event
*/
public function onCartConvertedEvent(CartConvertedEvent $event)
{
$salesChannelContext = $event->getSalesChannelContext();
$context = $event->getContext();
$offerSettings = $this->configService->getConfig($salesChannelContext);
if (!$offerSettings) {
return;
}
if ($this->offerService->getOfferMode($salesChannelContext)) {
$offer = $this->offerService->getOfferById($this->offerService->getOfferMode($salesChannelContext), $event->getContext());
$this->offerService->disableOfferMode($salesChannelContext);
$this->offerService->acceptOffer($offer, $event->getContext());
}
}
}