orderFactory = $orderFactory; $this->giftMessageSaveModel = $giftMessageSaveModel; $this->storeManager = $storeManager; $this->helper = $helper; $this->messageFactory = $messageFactory; } /** * @inheritdoc */ public function get($orderId) { /** @var \Magento\Sales\Api\Data\OrderInterface $order */ $order = $this->orderFactory->create()->load($orderId); if (!$this->helper->isMessagesAllowed('order', $order, $this->storeManager->getStore())) { throw new NoSuchEntityException( __("Either no order exists with this ID or gift message isn't allowed.") ); } $messageId = $order->getGiftMessageId(); if (!$messageId) { throw new NoSuchEntityException( __('No item with the provided ID was found in the Order. Verify the ID and try again.') ); } return $this->messageFactory->create()->load($messageId); } /** * @inheritdoc */ public function save($orderId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage) { /** @var \Magento\Sales\Api\Data\OrderInterface $order */ $order = $this->orderFactory->create()->load($orderId); if (!$order->getEntityId()) { throw new NoSuchEntityException(__('No order exists with this ID. Verify your information and try again.')); } if (0 == $order->getTotalItemCount()) { throw new InputException( __("Gift messages can't be used for an empty order. Create an order, add an item, and try again.") ); } if ($order->getIsVirtual()) { throw new InvalidTransitionException(__("Gift messages can't be used for virtual products.")); } if (!$this->helper->isMessagesAllowed('order', $order, $this->storeManager->getStore())) { throw new CouldNotSaveException(__("The gift message isn't available.")); } $message = []; $message[$orderId] = [ 'type' => 'order', $giftMessage::CUSTOMER_ID => $giftMessage->getCustomerId(), $giftMessage::SENDER => $giftMessage->getSender(), $giftMessage::RECIPIENT => $giftMessage->getRecipient(), $giftMessage::MESSAGE => $giftMessage->getMessage(), ]; $this->giftMessageSaveModel->setGiftmessages($message); try { $this->giftMessageSaveModel->saveAllInOrder(); } catch (\Exception $e) { throw new CouldNotSaveException( __('The gift message couldn\'t be added to the "%1" order.', $e->getMessage()), $e ); } return true; } }