custom/plugins/SwpSampleOrderSix/src/Subscriber/Frontend.php line 50

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. /**
  3.  * Shopware
  4.  * Copyright © 2021
  5.  *
  6.  * @category   Shopware
  7.  * @package    SwpSampleOrderSix
  8.  * @subpackage Frontend.php
  9.  *
  10.  * @copyright  2021 Iguana-Labs GmbH
  11.  * @author     Module Factory <info at module-factory.com>
  12.  * @license    https://www.module-factory.com/eula
  13.  */
  14. namespace Swp\SampleOrderSix\Subscriber;
  15. use Shopware\Core\Checkout\Cart\Event\BeforeLineItemQuantityChangedEvent;
  16. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  17. use Shopware\Core\System\SystemConfig\SystemConfigService;
  18. use Swp\SampleOrderSix\Core\SampleOrderSix\Price\SamplePriceDefinitionBuilderInterface;
  19. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  20. class Frontend implements EventSubscriberInterface
  21. {
  22.     /** @var SystemConfigService */
  23.     private $systemConfigService;
  24.     /**
  25.      * Frontend constructor.
  26.      * @param SystemConfigService $systemConfigService
  27.      */
  28.     public function __construct(
  29.         SystemConfigService $systemConfigService
  30.     ) {
  31.         $this->systemConfigService $systemConfigService;
  32.     }
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         // Return the events to listen to as array like this:  <event to listen to> => <method to execute>
  36.         return [
  37.             BeforeLineItemQuantityChangedEvent::class => 'onBeforeLineItemQuantityChanged'
  38.         ];
  39.     }
  40.     /**
  41.      * @param BeforeLineItemQuantityChangedEvent $event
  42.      * @return mixed
  43.      */
  44.     public function onBeforeLineItemQuantityChanged(BeforeLineItemQuantityChangedEvent $event)
  45.     {
  46.         if ($this->isCannelActive($event->getSalesChannelContext()) !== true) {
  47.             return;
  48.         }
  49.         if (strpos($event->getLineItem()->getId(), "sample") !== false) {
  50.             // !! Wichtig um wieder den richtigen Type zu setzen nach Quantity setzen
  51.             $event->getLineItem()->setType('swpsampleorder');
  52.         }
  53.     }
  54.     /**
  55.      * @param SalesChannelContext $event
  56.      * @return array|mixed|null
  57.      */
  58.     private function isCannelActive(SalesChannelContext $event)
  59.     {
  60.         return $this->systemConfigService->get(
  61.             'SwpSampleOrderSix.config.channelActive',
  62.             $event->getSalesChannel()->getId()
  63.         );
  64.     }
  65. }