OrderGet.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\GiftMessage\Model\Plugin;
  8. use Magento\Framework\Exception\NoSuchEntityException;
  9. class OrderGet
  10. {
  11. /**
  12. * @var \Magento\GiftMessage\Api\OrderRepositoryInterface
  13. */
  14. protected $giftMessageOrderRepository;
  15. /**
  16. * @var \Magento\GiftMessage\Api\OrderItemRepositoryInterface
  17. */
  18. protected $giftMessageOrderItemRepository;
  19. /**
  20. * @var \Magento\Sales\Api\Data\OrderExtensionFactory
  21. */
  22. protected $orderExtensionFactory;
  23. /**
  24. * @var \Magento\Sales\Api\Data\OrderItemExtensionFactory
  25. */
  26. protected $orderItemExtensionFactory;
  27. /**
  28. * Init plugin
  29. *
  30. * @param \Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository
  31. * @param \Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository
  32. * @param \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory
  33. * @param \Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory
  34. */
  35. public function __construct(
  36. \Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository,
  37. \Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository,
  38. \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory,
  39. \Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory
  40. ) {
  41. $this->giftMessageOrderRepository = $giftMessageOrderRepository;
  42. $this->giftMessageOrderItemRepository = $giftMessageOrderItemRepository;
  43. $this->orderExtensionFactory = $orderExtensionFactory;
  44. $this->orderItemExtensionFactory = $orderItemExtensionFactory;
  45. }
  46. /**
  47. * Get gift message
  48. *
  49. * @param \Magento\Sales\Api\OrderRepositoryInterface $subject
  50. * @param \Magento\Sales\Api\Data\OrderInterface $resultOrder
  51. * @return \Magento\Sales\Api\Data\OrderInterface
  52. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  53. */
  54. public function afterGet(
  55. \Magento\Sales\Api\OrderRepositoryInterface $subject,
  56. \Magento\Sales\Api\Data\OrderInterface $resultOrder
  57. ) {
  58. $resultOrder = $this->getOrderGiftMessage($resultOrder);
  59. $resultOrder = $this->getOrderItemGiftMessage($resultOrder);
  60. return $resultOrder;
  61. }
  62. /**
  63. * Get gift message for order
  64. *
  65. * @param \Magento\Sales\Api\Data\OrderInterface $order
  66. * @return \Magento\Sales\Api\Data\OrderInterface
  67. */
  68. protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
  69. {
  70. $extensionAttributes = $order->getExtensionAttributes();
  71. if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
  72. return $order;
  73. }
  74. try {
  75. /** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
  76. $giftMessage = $this->giftMessageOrderRepository->get($order->getEntityId());
  77. } catch (NoSuchEntityException $e) {
  78. return $order;
  79. }
  80. /** @var \Magento\Sales\Api\Data\OrderExtension $orderExtension */
  81. $orderExtension = $extensionAttributes ? $extensionAttributes : $this->orderExtensionFactory->create();
  82. $orderExtension->setGiftMessage($giftMessage);
  83. $order->setExtensionAttributes($orderExtension);
  84. return $order;
  85. }
  86. /**
  87. * Get gift message for items of order
  88. *
  89. * @param \Magento\Sales\Api\Data\OrderInterface $order
  90. * @return \Magento\Sales\Api\Data\OrderInterface
  91. */
  92. protected function getOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
  93. {
  94. $orderItems = $order->getItems();
  95. if (null !== $orderItems) {
  96. /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
  97. foreach ($orderItems as $orderItem) {
  98. $extensionAttributes = $orderItem->getExtensionAttributes();
  99. if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
  100. continue;
  101. }
  102. try {
  103. /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
  104. $giftMessage = $this->giftMessageOrderItemRepository->get(
  105. $order->getEntityId(),
  106. $orderItem->getItemId()
  107. );
  108. } catch (NoSuchEntityException $e) {
  109. continue;
  110. }
  111. /** @var \Magento\Sales\Api\Data\OrderItemExtension $orderItemExtension */
  112. $orderItemExtension = $extensionAttributes
  113. ? $extensionAttributes
  114. : $this->orderItemExtensionFactory->create();
  115. $orderItemExtension->setGiftMessage($giftMessage);
  116. $orderItem->setExtensionAttributes($orderItemExtension);
  117. }
  118. }
  119. return $order;
  120. }
  121. /**
  122. * @param \Magento\Sales\Api\OrderRepositoryInterface $subject
  123. * @param \Magento\Sales\Model\ResourceModel\Order\Collection $resultOrder
  124. * @return \Magento\Sales\Model\ResourceModel\Order\Collection
  125. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  126. */
  127. public function afterGetList(
  128. \Magento\Sales\Api\OrderRepositoryInterface $subject,
  129. \Magento\Sales\Model\ResourceModel\Order\Collection $resultOrder
  130. ) {
  131. /** @var $order */
  132. foreach ($resultOrder->getItems() as $order) {
  133. $this->afterGet($subject, $order);
  134. }
  135. return $resultOrder;
  136. }
  137. }