custom/plugins/TwigelBonusProgram/src/Subscriber/GenericPageLoading.php line 34

Open in your IDE?
  1. <?php
  2. namespace Twigel\BonusProgram\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  6. use Shopware\Storefront\Page\GenericPageLoadedEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Twigel\BonusProgram\Core\Content\TwigelOrderStatus\TwigelOrderStatusEntity;
  9. class GenericPageLoading implements EventSubscriberInterface
  10. {
  11.     /** @var EntityRepository */
  12.     private $orderStatusRepository;
  13.     public function __construct(EntityRepository $orderStatusRepository)
  14.     {
  15.         $this->orderStatusRepository $orderStatusRepository;
  16.     }
  17.     /**
  18.      * @inheritDoc
  19.      */
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             GenericPageLoadedEvent::class => 'onLoad'
  24.         ];
  25.     }
  26.     public function onLoad(GenericPageLoadedEvent $event)
  27.     {
  28.         if (!$event->getSalesChannelContext()->getCustomerId()) {
  29.             return;
  30.         }
  31.         $customerId $event->getSalesChannelContext()->getCustomerId();
  32.         $criteria = new Criteria();
  33.         $criteria->addFilter(new EqualsFilter('customerId'$customerId));
  34.         $orders $this->orderStatusRepository->search($criteria$event->getContext())->getElements();
  35.         $bonusAmount 0;
  36.         /** @var TwigelOrderStatusEntity $order */
  37.         foreach ($orders as $order) {
  38.             if ($order->getOrder()->getStateMachineState()->getTechnicalName() !== 'cancelled'){
  39.                 $bonusAmount += $order->getBonusAmount();
  40.             }
  41.         }
  42.         $event->getPage()->assign(['customerBonus' => $bonusAmount]);
  43.     }
  44. }