<?php declare(strict_types=1);
namespace Acris\Rrp\Storefront\Subscriber;
use Acris\Rrp\Components\RrpPrice\Struct\RrpRuleStruct;
use Acris\Rrp\Components\RrpPriceService;
use Shopware\Core\System\SalesChannel\Event\SalesChannelContextCreatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class SalesChannelContextSubscriber implements EventSubscriberInterface
{
private RrpPriceService $rrpPriceService;
public function __construct(RrpPriceService $rrpPriceService)
{
$this->rrpPriceService = $rrpPriceService;
}
public static function getSubscribedEvents(): array
{
return [
SalesChannelContextCreatedEvent::class => 'onSalesChannelContextCreated'
];
}
public function onSalesChannelContextCreated(SalesChannelContextCreatedEvent $event): void
{
$salesChannelContext = $event->getSalesChannelContext();
$rrpRule = $salesChannelContext->hasExtension(RrpRuleStruct::EXTENSION_KEY) ? $salesChannelContext->getExtension(RrpRuleStruct::EXTENSION_KEY)->getRrpRule() : null;
if (empty($rrpRule)) {
$salesChannelContext->addExtension(RrpRuleStruct::EXTENSION_KEY, new RrpRuleStruct($this->rrpPriceService->getValidRrpRule($salesChannelContext)));
}
}
}