CartDeliveryOptionManagement.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Model\Quote;
  6. use Magento\Framework\Exception\LocalizedException;
  7. use Magento\Quote\Model\ShippingAddressManagementInterface;
  8. use Temando\Shipping\Api\Quote\CartDeliveryOptionManagementInterface;
  9. /**
  10. * Manage delivery options for logged in customers.
  11. *
  12. * @package Temando\Shipping\Model
  13. * @author Sebastian Ertner <sebastian.ertner@netresearch.de>
  14. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  15. * @link http://www.temando.com/
  16. */
  17. class CartDeliveryOptionManagement implements CartDeliveryOptionManagementInterface
  18. {
  19. /**
  20. * @var ShippingAddressManagementInterface
  21. */
  22. private $addressManagement;
  23. /**
  24. * @var DeliveryOptionManagement
  25. */
  26. private $deliveryOptionManagement;
  27. /**
  28. * CartDeliveryOptionManagement constructor.
  29. *
  30. * @param DeliveryOptionManagement $deliveryOptionManagement
  31. * @param ShippingAddressManagementInterface $addressManagement
  32. */
  33. public function __construct(
  34. DeliveryOptionManagement $deliveryOptionManagement,
  35. ShippingAddressManagementInterface $addressManagement
  36. ) {
  37. $this->deliveryOptionManagement = $deliveryOptionManagement;
  38. $this->addressManagement = $addressManagement;
  39. }
  40. /**
  41. * Handle selected delivery option.
  42. *
  43. * @param int $cartId The shopping cart ID.
  44. * @param string $selectedOption
  45. * @return void
  46. * @throws LocalizedException
  47. */
  48. public function save($cartId, $selectedOption)
  49. {
  50. $shippingAddress = $this->addressManagement->get($cartId);
  51. $this->deliveryOptionManagement->selectOption($shippingAddress->getId(), $selectedOption);
  52. }
  53. }