custom/plugins/DvsnPseudoProduct/src/Subscriber/Core/Checkout/Cart/Order/OrderConverterSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. /**
  3.  * digitvision
  4.  *
  5.  * @category  digitvision
  6.  * @package   Shopware\Plugins\DvsnPseudoProduct
  7.  * @copyright (c) 2020 digitvision
  8.  */
  9. namespace Dvsn\PseudoProduct\Subscriber\Core\Checkout\Cart\Order;
  10. use Dvsn\PseudoProduct\Service\LineItemFactoryServiceInterface;
  11. use Shopware\Core\Checkout\Cart\LineItem\LineItem;
  12. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  13. use Shopware\Core\System\SystemConfig\SystemConfigService;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class OrderConverterSubscriber implements EventSubscriberInterface
  16. {
  17.     private SystemConfigService $systemConfigService;
  18.     public function __construct(
  19.         SystemConfigService $systemConfigService
  20.     ) {
  21.         $this->systemConfigService $systemConfigService;
  22.     }
  23.     /**
  24.      * {@inheritDoc}
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             CartConvertedEvent::class => ['onCartConverted'20]
  30.         ];
  31.     }
  32.     /**
  33.      * ...
  34.      *
  35.      * @param CartConvertedEvent $event
  36.      */
  37.     public function onCartConverted(CartConvertedEvent $event): void
  38.     {
  39.         if ((boolean) $this->systemConfigService->get('DvsnPseudoProduct.config.status'$event->getSalesChannelContext()->getSalesChannel()->getId()) === false) {
  40.             return;
  41.         }
  42.         $cart $event->getConvertedCart();
  43.         foreach ($cart['lineItems'] as $index => $lineItem) {
  44.             if ($lineItem['type'] !== LineItemFactoryServiceInterface::PSEUDO_PRODUCT_LINE_ITEM_TYPE) {
  45.                 continue;
  46.             }
  47.             $cart['lineItems'][$index]['stackable'] = true;
  48.             $cart['lineItems'][$index]['quantity'] = (int) $lineItem['payload']['dvsnPseudoProductQuantity'];
  49.             if ($lineItem['payload']['dvsnPseudoProductType'] === 'product') {
  50.                 $cart['lineItems'][$index]['type'] = LineItem::PRODUCT_LINE_ITEM_TYPE;
  51.                 $cart['lineItems'][$index]['productId'] = $lineItem['payload']['dvsnPseudoProductProductId'];
  52.             }
  53.         }
  54.         $event->setConvertedCart($cart);
  55.     }
  56. }