giftMessageOrderRepository = $giftMessageOrderRepository; $this->giftMessageOrderItemRepository = $giftMessageOrderItemRepository; } /** * Save gift message * * @param \Magento\Sales\Api\OrderRepositoryInterface $subject * @param \Magento\Sales\Api\Data\OrderInterface $resultOrder * @return \Magento\Sales\Api\Data\OrderInterface * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @throws CouldNotSaveException */ public function afterSave( \Magento\Sales\Api\OrderRepositoryInterface $subject, \Magento\Sales\Api\Data\OrderInterface $resultOrder ) { /** @var \Magento\Sales\Api\Data\OrderInterface $resultOrder */ $resultOrder = $this->saveOrderGiftMessage($resultOrder); $resultOrder = $this->saveOrderItemGiftMessage($resultOrder); return $resultOrder; } /** * Save gift message for order * * @param \Magento\Sales\Api\Data\OrderInterface $order * @return \Magento\Sales\Api\Data\OrderInterface * @throws CouldNotSaveException */ protected function saveOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order) { $extensionAttributes = $order->getExtensionAttributes(); if (null !== $extensionAttributes && null !== $extensionAttributes->getGiftMessage() ) { /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */ $giftMessage = $extensionAttributes->getGiftMessage(); try { $this->giftMessageOrderRepository->save($order->getEntityId(), $giftMessage); } catch (\Exception $e) { throw new CouldNotSaveException( __('The gift message couldn\'t be added to the "%1" order.', $e->getMessage()), $e ); } } return $order; } /** * Save gift message for items of order * * @param \Magento\Sales\Api\Data\OrderInterface $order * @return \Magento\Sales\Api\Data\OrderInterface * @throws CouldNotSaveException */ protected function saveOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order) { $items = $order->getItems(); if (null !== $items) { /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */ foreach ($items as $orderItem) { $extensionAttribute = $orderItem->getExtensionAttributes(); if (null !== $extensionAttribute && null !== $extensionAttribute->getGiftMessage() ) { /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */ $giftMessage = $extensionAttribute->getGiftMessage(); try { $this->giftMessageOrderItemRepository->save( $order->getEntityId(), $orderItem->getItemId(), $giftMessage ); } catch (\Exception $e) { throw new CouldNotSaveException( __('The gift message couldn\'t be added to the "%1" order item.', $e->getMessage()), $e ); } } } } return $order; } }