custom/plugins/TdsMerware/src/Storefront/Page/Checkout/Finish/CheckoutFinishPageLoadedSubscriber.php line 72

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Tds\Merware\Storefront\Page\Checkout\Finish;
  3. use Shopware\Core\System\SystemConfig\SystemConfigService;
  4. use Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoadedEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Tds\Merware\Service\Core\LoggerService;
  7. use Tds\Merware\Service\Core\Order\PendingOrderService;
  8. /**
  9.  * Class CheckoutFinishPageLoadedSubscriber
  10.  *
  11.  * @package Tds\Merware\Core\Checkout\Order\Subscriber
  12.  */
  13. class CheckoutFinishPageLoadedSubscriber implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var LoggerService
  17.      */
  18.     private $loggerService;
  19.     /**
  20.      * @var SystemConfigService
  21.      */
  22.     private $systemConfigService;
  23.     /**
  24.      * @var PendingOrderService
  25.      */
  26.     private $pendingOrderService;
  27.     /**
  28.      * {@inheritDoc}
  29.      */
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             CheckoutFinishPageLoadedEvent::class => 'onCheckoutFinishPageLoaded'
  34.         ];
  35.     }
  36.     /**
  37.      * Order constructor.
  38.      *
  39.      * @param LoggerService $loggerService
  40.      * @param SystemConfigService $systemConfigService
  41.      * @param PendingOrderService $pendingOrderService
  42.      */
  43.     public function __construct(LoggerService $loggerServiceSystemConfigService $systemConfigServicePendingOrderService $pendingOrderService)
  44.     {
  45.         $this->loggerService $loggerService;
  46.         $this->systemConfigService $systemConfigService;
  47.         $this->pendingOrderService $pendingOrderService;
  48.     }
  49.     /**
  50.      * Event to catch orders with a changed payment method
  51.      *
  52.      * @param CheckoutFinishPageLoadedEvent $event
  53.      */
  54.     public function onCheckoutFinishPageLoaded(CheckoutFinishPageLoadedEvent $event)
  55.     {
  56.         if ((bool) $this->systemConfigService->get('TdsMerware.config.processChangedOrderPayment')) {
  57.             $page $event->getPage();
  58.             if (!$page->isPaymentFailed() && $page->isChangedPayment()) {
  59.                 $order $page->getOrder();
  60.                 if (!empty($order)) {
  61.                     $this->pendingOrderService->processChangedOrderPaymentMethod($event->getContext(), $order);
  62.                 }
  63.             }
  64.         }
  65.     }
  66. }