src/Module/Checkout/Integration/Subscriber/AddSapPricesToOrderSubscriber.php line 49

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Module\Checkout\Integration\Subscriber;
  4. use App\Module\Account\Entity\User;
  5. use App\Module\Cart\Business\Facade\CartPriceFacadeInterface;
  6. use App\Module\Cart\Helper\SapRequestHelper;
  7. use App\Module\MiddlewareConnector\Business\Facade\SapFacadeInterface;
  8. use App\Module\ShortSimpleCheckout\Event\Cart\CartCreateOrderEvent;
  9. use App\Module\ShortSimpleCheckout\Events;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. /**
  12. * @package App\Module\Checkout\Integration\Subscriber
  13. */
  14. class AddSapPricesToOrderSubscriber implements EventSubscriberInterface
  15. {
  16. private ?User $user;
  17. private CartPriceFacadeInterface $cartPriceFacade;
  18. /**
  19. * @param User|null $user
  20. * @param CartPriceFacadeInterface $cartPriceFacade
  21. */
  22. public function __construct(
  23. ?User $user,
  24. SapFacadeInterface $sapFacade,
  25. CartPriceFacadeInterface $cartPriceFacade
  26. ) {
  27. $this->user = $user;
  28. $this->cartPriceFacade = $cartPriceFacade;
  29. }
  30. /**
  31. * @return array
  32. */
  33. public static function getSubscribedEvents(): array
  34. {
  35. return [Events::CART_CREATE_ORDER => 'onCreateOrder'];
  36. }
  37. /**
  38. * @param CartCreateOrderEvent $event
  39. *
  40. * @return CartCreateOrderEvent
  41. */
  42. public function onCreateOrder(CartCreateOrderEvent $event): CartCreateOrderEvent
  43. {
  44. $customerNumber = SapRequestHelper::getCorrectCustomerNumber($this->user, $event->getCart());
  45. $cart = $this->cartPriceFacade->modifyCartWithSapPrices($event->getCart(), $customerNumber);
  46. return $event->setCart($cart); // @phpstan-ignore-line
  47. }
  48. }