custom/plugins/AcrisRrpCS/src/Storefront/Subscriber/SalesChannelContextSubscriber.php line 26

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Acris\Rrp\Storefront\Subscriber;
  3. use Acris\Rrp\Components\RrpPrice\Struct\RrpRuleStruct;
  4. use Acris\Rrp\Components\RrpPriceService;
  5. use Shopware\Core\System\SalesChannel\Event\SalesChannelContextCreatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class SalesChannelContextSubscriber implements EventSubscriberInterface
  8. {
  9.     private RrpPriceService $rrpPriceService;
  10.     public function __construct(RrpPriceService $rrpPriceService)
  11.     {
  12.         $this->rrpPriceService $rrpPriceService;
  13.     }
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             SalesChannelContextCreatedEvent::class => 'onSalesChannelContextCreated'
  18.         ];
  19.     }
  20.     public function onSalesChannelContextCreated(SalesChannelContextCreatedEvent $event): void
  21.     {
  22.         $salesChannelContext $event->getSalesChannelContext();
  23.         $rrpRule $salesChannelContext->hasExtension(RrpRuleStruct::EXTENSION_KEY) ? $salesChannelContext->getExtension(RrpRuleStruct::EXTENSION_KEY)->getRrpRule() : null;
  24.         if (empty($rrpRule)) {
  25.             $salesChannelContext->addExtension(RrpRuleStruct::EXTENSION_KEY, new RrpRuleStruct($this->rrpPriceService->getValidRrpRule($salesChannelContext)));
  26.         }
  27.     }
  28. }