Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OrderGet.php
Go to the documentation of this file.
1 <?php
9 
11 
12 class OrderGet
13 {
18 
23 
28 
33 
42  public function __construct(
43  \Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository,
44  \Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository,
45  \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory,
46  \Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory
47  ) {
48  $this->giftMessageOrderRepository = $giftMessageOrderRepository;
49  $this->giftMessageOrderItemRepository = $giftMessageOrderItemRepository;
50  $this->orderExtensionFactory = $orderExtensionFactory;
51  $this->orderItemExtensionFactory = $orderItemExtensionFactory;
52  }
53 
62  public function afterGet(
63  \Magento\Sales\Api\OrderRepositoryInterface $subject,
64  \Magento\Sales\Api\Data\OrderInterface $resultOrder
65  ) {
66  $resultOrder = $this->getOrderGiftMessage($resultOrder);
67  $resultOrder = $this->getOrderItemGiftMessage($resultOrder);
68 
69  return $resultOrder;
70  }
71 
78  protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
79  {
80  $extensionAttributes = $order->getExtensionAttributes();
81  if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
82  return $order;
83  }
84 
85  try {
87  $giftMessage = $this->giftMessageOrderRepository->get($order->getEntityId());
88  } catch (NoSuchEntityException $e) {
89  return $order;
90  }
91 
93  $orderExtension = $extensionAttributes ? $extensionAttributes : $this->orderExtensionFactory->create();
94  $orderExtension->setGiftMessage($giftMessage);
95  $order->setExtensionAttributes($orderExtension);
96 
97  return $order;
98  }
99 
106  protected function getOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
107  {
108  $orderItems = $order->getItems();
109  if (null !== $orderItems) {
111  foreach ($orderItems as $orderItem) {
112  $extensionAttributes = $orderItem->getExtensionAttributes();
113  if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
114  continue;
115  }
116 
117  try {
118  /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
119  $giftMessage = $this->giftMessageOrderItemRepository->get(
120  $order->getEntityId(),
121  $orderItem->getItemId()
122  );
123  } catch (NoSuchEntityException $e) {
124  continue;
125  }
126 
128  $orderItemExtension = $extensionAttributes
130  : $this->orderItemExtensionFactory->create();
131  $orderItemExtension->setGiftMessage($giftMessage);
132  $orderItem->setExtensionAttributes($orderItemExtension);
133  }
134  }
135  return $order;
136  }
137 
144  public function afterGetList(
145  \Magento\Sales\Api\OrderRepositoryInterface $subject,
146  \Magento\Sales\Model\ResourceModel\Order\Collection $resultOrder
147  ) {
149  foreach ($resultOrder->getItems() as $order) {
150  $this->afterGet($subject, $order);
151  }
152  return $resultOrder;
153  }
154 }
__construct(\Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository, \Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository, \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory, \Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory)
Definition: OrderGet.php:42
$orderItem
Definition: order.php:30
$giftMessage
Definition: items.phtml:47
afterGet(\Magento\Sales\Api\OrderRepositoryInterface $subject, \Magento\Sales\Api\Data\OrderInterface $resultOrder)
Definition: OrderGet.php:62
$order
Definition: order.php:55
$extensionAttributes
Definition: payment.php:22