custom/plugins/WbfkOffer/src/Core/Checkout/SalesChannel/CartServiceDecorator.php line 39

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Wbfk\Offer\Core\Checkout\SalesChannel;
  4. use Exception;
  5. use Shopware\Core\Checkout\Cart\Cart;
  6. use Shopware\Core\Checkout\Cart\SalesChannel\CartService;
  7. use Shopware\Core\Framework\Validation\DataBag\RequestDataBag;
  8. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  9. use Wbfk\Offer\Core\Offer\Storefront\OfferService;
  10. class CartServiceDecorator extends CartService
  11. {
  12.     public function __construct(
  13.         private readonly OfferService $offerService,
  14.         private readonly CartService $decorated
  15.     ) {
  16.     }
  17.     public function getDecorated(): CartService
  18.     {
  19.         return $this->decorated;
  20.     }
  21.     public function setCart(Cart $cart): void
  22.     {
  23.         $this->decorated->setCart($cart);
  24.     }
  25.     public function createNew(string $tokenstring $name self::SALES_CHANNEL): Cart
  26.     {
  27.         return $this->decorated->createNew($token$name);
  28.     }
  29.     public function getCart(string $tokenSalesChannelContext $contextstring $name self::SALES_CHANNELbool $caching true): Cart
  30.     {
  31.         return $this->decorated->getCart($token$context$name$caching);
  32.     }
  33.     public function add(Cart $cart$itemsSalesChannelContext $context): Cart
  34.     {
  35.         return $this->decorated->add($cart$items$context);
  36.     }
  37.     /**
  38.      * @throws Exception
  39.      */
  40.     public function changeQuantity(Cart $cartstring $identifierint $quantitySalesChannelContext $context): Cart
  41.     {
  42.         $offerItemId $cart->getLineItems()->get($identifier)->getPayloadValue('offer-item')['id'] ?? false;
  43.         $offerId $cart->getLineItems()->get($identifier)->getPayloadValue('offer-item')['offerId'] ?? false;
  44.         if (!$offerItemId || !$offerId) {
  45.             return $this->decorated->changeQuantity($cart$identifier$quantity$context);
  46.         }
  47.         $offer $this->offerService->getOfferById($offerId$context->getContext());
  48.         $this->offerService->changeLineItemQuantity($offer$offerItemId$quantity$context->getContext());
  49.         return $this->decorated->changeQuantity($cart$identifier$quantity$context);
  50.     }
  51.     public function remove(Cart $cartstring $identifierSalesChannelContext $context): Cart
  52.     {
  53.         return $this->decorated->remove($cart$identifier$context);
  54.     }
  55.     public function order(Cart $cartSalesChannelContext $contextRequestDataBag $data): string
  56.     {
  57.         return $this->decorated->order($cart$context$data);
  58.     }
  59.     public function recalculate(Cart $cartSalesChannelContext $context): Cart
  60.     {
  61.         return $this->decorated->recalculate($cart$context);
  62.     }
  63.     public function deleteCart(SalesChannelContext $context): void
  64.     {
  65.         $this->decorated->deleteCart($context);
  66.     }
  67.     public function reset(): void
  68.     {
  69.         $this->decorated->reset();
  70.     }
  71. }