custom/plugins/KliksteenPriceVATToggle/src/Subscriber/ProductLoaded.php line 76

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace KliksteenPriceVATToggle\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Price\Struct\CartPrice;
  4. use Shopware\Core\Checkout\Customer\CustomerEvents;
  5. use Shopware\Core\Content\Cms\Events\CmsPageLoaderCriteriaEvent;
  6. use Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent;
  7. use Shopware\Core\Content\Product\Events\ProductSearchCriteriaEvent;
  8. use Shopware\Core\Content\Product\Events\ProductSuggestCriteriaEvent;
  9. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Shopware\Core\System\SystemConfig\SystemConfigService;
  12. use Shopware\Core\Content\Product\ProductEvents;
  13. use Shopware\Core\System\SalesChannel\Entity\SalesChannelEntityLoadedEvent;
  14. use Shopware\Storefront\Page\Product\ProductPageCriteriaEvent;
  15. use Symfony\Component\HttpFoundation\Session\Session;
  16. class ProductLoaded implements EventSubscriberInterface
  17. {
  18.     private $systemConfigService;
  19.     /**
  20.      * @var Session
  21.      */
  22.     private $session;
  23.     public function __construct(Session $session,SystemConfigService $systemConfigService)
  24.     {
  25.         // Get system config
  26.         $this->session $session;
  27.         $this->systemConfigService $systemConfigService;
  28.     }
  29.     /**
  30.      * @return array
  31.      */
  32.     public static function getSubscribedEvents(): array
  33.     {
  34.         return [
  35.             ProductListingCriteriaEvent::class => 'onProductCriteriaLoaded',
  36.             ProductSuggestCriteriaEvent::class => 'onProductSuggestCriteriaLoaded',
  37.             ProductSearchCriteriaEvent::class => 'onProductSearchCriteriaLoaded',
  38.             ProductPageCriteriaEvent::class => 'onProductPageCriteriaLoaded',
  39.             CmsPageLoaderCriteriaEvent::class => "onCMSCriteriaLoaded"
  40.         ];
  41.     }
  42.     public function onCMSCriteriaLoaded(CmsPageLoaderCriteriaEvent $event)
  43.     {
  44.         $salesChannelContext  $event->getSalesChannelContext();
  45.         $taxState $this->getTaxState();
  46.         $salesChannelContext->getContext()->setTaxState($taxState);
  47.     }
  48.     public function onProductSuggestCriteriaLoaded(ProductSuggestCriteriaEvent $event)
  49.     {
  50.         $salesChannelContext  $event->getSalesChannelContext();
  51.         $taxState $this->getTaxState();
  52.         $salesChannelContext->getContext()->setTaxState($taxState);
  53.     }
  54.     public function onProductSearchCriteriaLoaded(ProductSearchCriteriaEvent $event
  55.     {
  56.         $salesChannelContext  $event->getSalesChannelContext();
  57.         $taxState $this->getTaxState();
  58.         $salesChannelContext->getContext()->setTaxState($taxState);
  59.     }
  60.     public function onProductCriteriaLoaded(ProductListingCriteriaEvent $event)
  61.     {
  62.         $salesChannelContext  $event->getSalesChannelContext();
  63.         $taxState $this->getTaxState();
  64.         $salesChannelContext->getContext()->setTaxState($taxState); 
  65.     }
  66.     public function onProductPageCriteriaLoaded(ProductPageCriteriaEvent $event)
  67.     {
  68.         $salesChannelContext  $event->getSalesChannelContext();
  69.         $taxState $this->getTaxState();
  70.         $salesChannelContext->getContext()->setTaxState($taxState); 
  71.     }
  72.     private function getTaxState() 
  73.     {
  74.         $taxState '';
  75.         if($this->session->has('toggleCustomerGroup')) {
  76.             if($this->session->get('toggleCustomerGroup') == 'NET'){
  77.                 $taxState CartPrice::TAX_STATE_NET;
  78.             }else{
  79.                 $taxState CartPrice::TAX_STATE_GROSS;
  80.             }
  81.         }else{
  82.             $this->session->set('toggleCustomerGroup''NET');
  83.             $taxState CartPrice::TAX_STATE_NET;
  84.         }
  85.         return $taxState;
  86.     }
  87. }