<?php
declare(strict_types=1);
namespace VioB2BLogin\Storefront\Subscriber;
use Shopware\Storefront\Event\RouteRequest\OrderRouteRequestEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use VioB2BLogin\Core\Services\AbstractAvailabilityService;
use VioB2BLogin\Core\Services\PrivilegeService;
use VioB2BLogin\Storefront\Traits\PrivilegedOrdersFilterTrait;
class OrderPageSubscriber implements EventSubscriberInterface
{
use PrivilegedOrdersFilterTrait;
private PrivilegeService $privilegeService;
private AbstractAvailabilityService $availabilityService;
public function __construct(
PrivilegeService $privilegeService,
AbstractAvailabilityService $availabilityService
)
{
$this->privilegeService = $privilegeService;
$this->availabilityService = $availabilityService;
}
public static function getSubscribedEvents(): array
{
return [
OrderRouteRequestEvent::class => 'onOrderRouteRequest'
];
}
public function onOrderRouteRequest(OrderRouteRequestEvent $event): void
{
$context = $event->getSalesChannelContext();
if (!$this->availabilityService->isEnabled($context)) {
return;
}
$this->addPrivilegedOrdersFilter(
$this->privilegeService,
$context,
$event->getCriteria()
);
}
}