<?php declare(strict_types=1);
namespace Tds\Orlob\Subscriber;
use Shopware\Core\System\SystemConfig\SystemConfigService;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Class ProductPageSubscriber
*
* @package Tds\Campado\Subscriber
*/
class ProductPageSubscriber implements EventSubscriberInterface
{
private $systemConfigService;
/**
* ProductPageSubscriber constructor.
*
* @param SystemConfigService $systemConfigService
*/
public function __construct(SystemConfigService $systemConfigService)
{
$this->systemConfigService = $systemConfigService;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents(): array
{
return [
ProductPageLoadedEvent::class => 'onProductPageLoaded'
];
}
/**
* @param ProductPageLoadedEvent $event
*
*/
public function onProductPageLoaded(ProductPageLoadedEvent $event)
{
$generalDiscount = 0;
$customer = $event->getSalesChannelContext()->getCustomer();
if (!empty($customer)) {
$customerCustomFields = $customer->getCustomFields();
if (!empty($customerCustomFields['tds_merware_customer_discount_general'])) {
$product = $event->getPage()->getProduct();
if (!empty($product)) {
$productCustomFields = $product->getCustomFields();
if (!empty($productCustomFields['tds_merware_product_discount_activate'])) {
$discountedProducts = $customerCustomFields['tds_merware_customer_discount_products'];
$discountedProductList = [];
if (!empty($discountedProducts)) {
$discountedProductList = @json_decode($discountedProducts, true);
}
if (!empty($discountedProductList)) {
$isDiscounted = false;
foreach ($discountedProductList as $discountedProductEntry) {
if ($product->getProductNumber() == $discountedProductEntry['artcode']) {
$isDiscounted = true;
break;
}
}
if (!$isDiscounted) {
$generalDiscount = $customerCustomFields['tds_merware_customer_discount_general'];
}
} else {
$generalDiscount = $customerCustomFields['tds_merware_customer_discount_general'];
}
}
}
}
}
$event->getPage()->assign(
[
'tdsOrlob' => [
'generalDiscount' => $generalDiscount
]
]
);
}
}