custom/plugins/OkeonlineKejeSearchOrdersInStorefront/src/Storefront/Subscribers/OrderRouteRequestEventSubscriber.php line 38

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Okeonline\KejeSearchOrdersInStorefront\Storefront\Subscribers;
  3. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\ContainsFilter;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter;
  6. use Shopware\Storefront\Event\RouteRequest\OrderRouteRequestEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class OrderRouteRequestEventSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var OrderRouteRequestEvent
  13.      */
  14.     private $event;
  15.     /**
  16.      * @var RequestStack
  17.      */
  18.     private $requestStack;
  19.     public function __construct(
  20.         RequestStack $requestStack
  21.     )
  22.     {
  23.         $this->requestStack $requestStack;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             OrderRouteRequestEvent::class => ['filterOrderQuery'0]
  29.         ];
  30.     }
  31.     public function filterOrderQuery(OrderRouteRequestEvent $event)
  32.     {
  33.         $this->event $event;
  34.         if(!$this->requestStack->getCurrentRequest()->query->has('searchterm'))
  35.         {
  36.             return;
  37.         }
  38.         $searchQuery $this->requestStack->getCurrentRequest()->query->get('searchterm') ?? null;
  39.         if(empty($searchQuery)){
  40.             return;
  41.         }
  42.         $criteria $this->event->getCriteria();
  43.         $criteria->addFilter(
  44.             new MultiFilter(
  45.                 MultiFilter::CONNECTION_OR,
  46.                 [
  47.                     new EqualsFilter('orderNumber'$searchQuery),
  48.                     new ContainsFilter('customFields'sprintf('"oo_checkout_extra_data_reference":"%s'$searchQuery))
  49.                 ]
  50.             )
  51.         );
  52.     }
  53. }