ShippingSaved.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Multishipping\Controller\Checkout\Address;
  7. use Magento\Framework\App\Action\Context;
  8. use Magento\Multishipping\Controller\Checkout\Address;
  9. use Magento\Customer\Api\AddressRepositoryInterface;
  10. use Magento\Framework\Api\FilterBuilder;
  11. use Magento\Framework\Api\SearchCriteriaBuilder;
  12. /**
  13. * Class ShippingSaved
  14. *
  15. * @SuppressWarnings(PHPMD.LongVariable)
  16. */
  17. class ShippingSaved extends Address
  18. {
  19. /**
  20. * @var \Magento\Customer\Api\AddressRepositoryInterface
  21. */
  22. private $addressRepository;
  23. /**
  24. * @var \Magento\Framework\Api\FilterBuilder
  25. */
  26. private $filterBuilder;
  27. /**
  28. * @var \Magento\Framework\Api\SearchCriteriaBuilder
  29. */
  30. private $searchCriteriaBuilder;
  31. /**
  32. * Initialize dependencies.
  33. *
  34. * @param Context $context
  35. * @param AddressRepositoryInterface $addressRepository
  36. * @param FilterBuilder $filterBuilder
  37. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  38. */
  39. public function __construct(
  40. Context $context,
  41. AddressRepositoryInterface $addressRepository,
  42. FilterBuilder $filterBuilder,
  43. SearchCriteriaBuilder $searchCriteriaBuilder
  44. ) {
  45. parent::__construct($context);
  46. $this->addressRepository = $addressRepository;
  47. $this->filterBuilder = $filterBuilder;
  48. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  49. }
  50. /**
  51. * @return void
  52. */
  53. public function execute()
  54. {
  55. $filter = $this->filterBuilder->setField('parent_id')->setValue($this->_getCheckout()->getCustomer()->getId())
  56. ->setConditionType('eq')->create();
  57. $addresses = (array)($this->addressRepository->getList(
  58. $this->searchCriteriaBuilder->addFilters([$filter])->create()
  59. )->getItems());
  60. /**
  61. * if we create first address we need reset emd init checkout
  62. */
  63. if (count($addresses) === 1) {
  64. $this->_getCheckout()->reset();
  65. }
  66. $this->_redirect('*/checkout/addresses');
  67. }
  68. }