OrderCustomerDelegate.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Sales\Model\Order;
  8. use Magento\Customer\Api\AccountDelegationInterface;
  9. use Magento\Framework\Controller\Result\Redirect;
  10. use Magento\Sales\Api\OrderCustomerDelegateInterface;
  11. use Magento\Sales\Observer\AssignOrderToCustomerObserver;
  12. /**
  13. * {@inheritdoc}
  14. *
  15. * @see AssignOrderToCustomerObserver
  16. */
  17. class OrderCustomerDelegate implements OrderCustomerDelegateInterface
  18. {
  19. /**
  20. * @var OrderCustomerExtractor
  21. */
  22. private $customerExtractor;
  23. /**
  24. * @var AccountDelegationInterface
  25. */
  26. private $delegateService;
  27. /**
  28. * @param OrderCustomerExtractor $customerExtractor
  29. * @param AccountDelegationInterface $delegateService
  30. */
  31. public function __construct(
  32. OrderCustomerExtractor $customerExtractor,
  33. AccountDelegationInterface $delegateService
  34. ) {
  35. $this->customerExtractor = $customerExtractor;
  36. $this->delegateService = $delegateService;
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public function delegateNew(int $orderId): Redirect
  42. {
  43. return $this->delegateService->createRedirectForNew(
  44. $this->customerExtractor->extract($orderId),
  45. ['__sales_assign_order_id' => $orderId]
  46. );
  47. }
  48. }