custom/plugins/TdsOrlob/src/Subscriber/ProductPageSubscriber.php line 49

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Tds\Orlob\Subscriber;
  3. use Shopware\Core\System\SystemConfig\SystemConfigService;
  4. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. /**
  7.  * Class ProductPageSubscriber
  8.  *
  9.  * @package Tds\Campado\Subscriber
  10.  */
  11. class ProductPageSubscriber implements EventSubscriberInterface
  12. {
  13.     private $systemConfigService;
  14.     /**
  15.      * ProductPageSubscriber constructor.
  16.      *
  17.      * @param SystemConfigService $systemConfigService
  18.      */
  19.     public function __construct(SystemConfigService $systemConfigService)
  20.     {
  21.         $this->systemConfigService $systemConfigService;
  22.     }
  23.     /**
  24.      * {@inheritDoc}
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             ProductPageLoadedEvent::class => 'onProductPageLoaded'
  30.         ];
  31.     }
  32.     /**
  33.      * @param ProductPageLoadedEvent $event
  34.      *
  35.      */
  36.     public function onProductPageLoaded(ProductPageLoadedEvent $event)
  37.     {
  38.         $generalDiscount 0;
  39.         $customer $event->getSalesChannelContext()->getCustomer();
  40.         if (!empty($customer)) {
  41.             $customerCustomFields $customer->getCustomFields();
  42.             if (!empty($customerCustomFields['tds_merware_customer_discount_general'])) {
  43.                 $product $event->getPage()->getProduct();
  44.                 if (!empty($product)) {
  45.                     $productCustomFields $product->getCustomFields();
  46.                     if (!empty($productCustomFields['tds_merware_product_discount_activate'])) {
  47.                         $discountedProducts $customerCustomFields['tds_merware_customer_discount_products'];
  48.                         $discountedProductList = [];
  49.                         if (!empty($discountedProducts)) {
  50.                             $discountedProductList = @json_decode($discountedProductstrue);
  51.                         }
  52.                         if (!empty($discountedProductList)) {
  53.                             $isDiscounted false;
  54.                             foreach ($discountedProductList as $discountedProductEntry) {
  55.                                 if ($product->getProductNumber() == $discountedProductEntry['artcode']) {
  56.                                     $isDiscounted true;
  57.                                     break;
  58.                                 }
  59.                             }
  60.                             if (!$isDiscounted) {
  61.                                 $generalDiscount $customerCustomFields['tds_merware_customer_discount_general'];
  62.                             }
  63.                         } else {
  64.                             $generalDiscount $customerCustomFields['tds_merware_customer_discount_general'];
  65.                         }
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.         $event->getPage()->assign(
  71.             [
  72.                 'tdsOrlob' => [
  73.                     'generalDiscount' => $generalDiscount
  74.                 ]
  75.             ]
  76.         );
  77.     }
  78. }