vendor/store.shopware.com/swagb2bplatform/components/Offer/BridgePlatform/LineItemQuantityChangedSubscriber.php line 28

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\B2B\Offer\BridgePlatform;
  3. use Shopware\B2B\Cart\BridgePlatform\CartState;
  4. use Shopware\B2B\Cart\BridgePlatform\OfferDestination;
  5. use Shopware\Core\Checkout\Cart\Cart;
  6. use Shopware\Core\Checkout\Cart\Event\BeforeLineItemQuantityChangedEvent;
  7. use Shopware\Core\Checkout\Cart\Event\LineItemQuantityChangedEvent;
  8. use Shopware\Core\Checkout\Cart\LineItem\LineItem;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class LineItemQuantityChangedSubscriber implements EventSubscriberInterface
  11. {
  12.     public static function getSubscribedEvents(): array
  13.     {
  14.         return [
  15.             LineItemQuantityChangedEvent::class => 'checkLineItemQuantityChanged',
  16.             BeforeLineItemQuantityChangedEvent::class => 'checkBeforeLineItemQuantityChanged',
  17.         ];
  18.     }
  19.     public function checkLineItemQuantityChanged(LineItemQuantityChangedEvent $event): void
  20.     {
  21.         $this->checkChanged($event->getCart(), $event->getLineItem());
  22.     }
  23.     public function checkBeforeLineItemQuantityChanged(BeforeLineItemQuantityChangedEvent $event): void
  24.     {
  25.         $this->checkChanged($event->getCart(), $event->getLineItem());
  26.     }
  27.     private function checkChanged(Cart $cartLineItem $lineItem): void
  28.     {
  29.         if (!$cart->hasExtension(CartState::NAME)) {
  30.             return;
  31.         }
  32.         $destination CartState::extract($cart)->getDestination();
  33.         if (!($destination instanceof OfferDestination)) {
  34.             return;
  35.         }
  36.         throw new QuantityChangeNotAllowedException($lineItem->getId());
  37.     }
  38. }