LoadOrder.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License").
  6. * You may not use this file except in compliance with the License.
  7. * A copy of the License is located at
  8. *
  9. * http://aws.amazon.com/apache2.0
  10. *
  11. * or in the "license" file accompanying this file. This file is distributed
  12. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  13. * express or implied. See the License for the specific language governing
  14. * permissions and limitations under the License.
  15. */
  16. namespace Amazon\Payment\Observer;
  17. use Amazon\Core\Helper\Data;
  18. use Amazon\Payment\Api\Data\OrderLinkInterfaceFactory;
  19. use Magento\Framework\Event\Observer;
  20. use Magento\Framework\Event\ObserverInterface;
  21. use Magento\Sales\Api\Data\OrderExtensionFactory;
  22. use Magento\Sales\Api\Data\OrderInterface;
  23. use Amazon\Payment\Api\Data\QuoteLinkInterfaceFactory;
  24. use Amazon\Payment\Model\Adapter\AmazonPaymentAdapter;
  25. class LoadOrder implements ObserverInterface
  26. {
  27. /**
  28. * @var OrderExtensionFactory
  29. */
  30. private $orderExtensionFactory;
  31. /**
  32. * @var OrderLinkInterfaceFactory
  33. */
  34. private $orderLinkFactory;
  35. /**
  36. * @var Data
  37. */
  38. private $coreHelper;
  39. private $quoteLinkFactory;
  40. private $adapter;
  41. public function __construct(
  42. OrderExtensionFactory $orderExtensionFactory,
  43. OrderLinkInterfaceFactory $orderLinkFactory,
  44. Data $coreHelper,
  45. QuoteLinkInterfaceFactory $quoteLinkFactory,
  46. AmazonPaymentAdapter $adapter
  47. ) {
  48. $this->orderExtensionFactory = $orderExtensionFactory;
  49. $this->orderLinkFactory = $orderLinkFactory;
  50. $this->coreHelper = $coreHelper;
  51. $this->quoteLinkFactory = $quoteLinkFactory;
  52. $this->adapter = $adapter;
  53. }
  54. public function execute(Observer $observer)
  55. {
  56. if ($this->coreHelper->isPwaEnabled()) {
  57. $order = $observer->getOrder();
  58. $this->setAmazonOrderReferenceIdExtensionAttribute($order);
  59. }
  60. }
  61. protected function setAmazonOrderReferenceIdExtensionAttribute(OrderInterface $order)
  62. {
  63. $orderExtension = ($order->getExtensionAttributes()) ?: $this->orderExtensionFactory->create();
  64. if ($order->getId()) {
  65. $amazonOrder = $this->orderLinkFactory->create();
  66. $amazonOrder->load($order->getId(), 'order_id');
  67. if ($amazonOrder->getId()) {
  68. $orderExtension->setAmazonOrderReferenceId($amazonOrder);
  69. } else {
  70. if ($order->getQuoteId()) {
  71. $quoteLink = $this->quoteLinkFactory->create();
  72. $quoteLink->load($order->getQuoteId(), 'quote_id');
  73. if ($quoteLink->getAmazonOrderReferenceId()) {
  74. $amazonOrder->setAmazonOrderReferenceId($quoteLink->getAmazonOrderReferenceId())
  75. ->setOrderId($order->getId())
  76. ->save();
  77. $this->adapter->setOrderAttributes($order->getStoreId(), $quoteLink->getAmazonOrderReferenceId(), $order->getIncrementId());
  78. }
  79. }
  80. }
  81. }
  82. $order->setExtensionAttributes($orderExtension);
  83. }
  84. }