vendor/store.shopware.com/premsindividualoffer6/src/Subscriber/OrderConvertedSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. /**
  3.  * PremSoft
  4.  * Copyright © 2021 Premsoft - Sven Mittreiter
  5.  *
  6.  * @copyright  Copyright (c) 2021, premsoft - Sven Mittreiter (http://www.premsoft.de)
  7.  * @author     Sven Mittreiter <info@premsoft.de>
  8.  */
  9. namespace Prems\Plugin\PremsIndividualOffer6\Subscriber;
  10. use Prems\Plugin\PremsIndividualOffer6\Core\Offer\Storefront\ConfigService;
  11. use Prems\Plugin\PremsIndividualOffer6\Core\Offer\Storefront\OfferService;
  12. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class OrderConvertedSubscriber implements EventSubscriberInterface
  15. {
  16.     /**
  17.      * @var ConfigService
  18.      */
  19.     private $configService;
  20.     /**
  21.      * @var OfferService
  22.      */
  23.     private OfferService $offerService;
  24.     public function __construct(
  25.         ConfigService $configService,
  26.         OfferService $offerService)
  27.     {
  28.         $this->configService $configService;
  29.         $this->offerService $offerService;
  30.     }
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             CartConvertedEvent::class => 'onCartConvertedEvent'
  35.         ];
  36.     }
  37.     /**
  38.      * Flag offer as ordered. Close offer mode
  39.      * @param CartConvertedEvent $event
  40.      */
  41.     public function onCartConvertedEvent(CartConvertedEvent $event)
  42.     {
  43.         $salesChannelContext $event->getSalesChannelContext();
  44.         $context $event->getContext();
  45.         $offerSettings $this->configService->getConfig($salesChannelContext);
  46.         if (!$offerSettings) {
  47.             return;
  48.         }
  49.         if ($this->offerService->getOfferMode($salesChannelContext)) {
  50.             $offer $this->offerService->getOfferById($this->offerService->getOfferMode($salesChannelContext), $event->getContext());
  51.             $this->offerService->disableOfferMode($salesChannelContext);
  52.             $this->offerService->acceptOffer($offer$event->getContext());
  53.         }
  54.     }
  55. }