/**
  * Set gift messages from additional data.
  *
  * @param \Magento\Quote\Model\Cart\TotalsAdditionalDataProcessor $subject
  * @param TotalsAdditionalDataInterface $additionalData
  * @param int $cartId
  * @return void
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function beforeProcess(TotalsAdditionalDataProcessor $subject, TotalsAdditionalDataInterface $additionalData, $cartId)
 {
     $giftMessages = $additionalData->getExtensionAttributes()->getGiftMessages();
     foreach ($giftMessages as $giftMessage) {
         /** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
         $entityType = $giftMessage->getExtensionAttributes()->getEntityType();
         $entityId = $giftMessage->getExtensionAttributes()->getEntityId();
         if ($entityType === 'quote') {
             $this->cartRepository->save($cartId, $giftMessage);
         } elseif ($entityType === 'item') {
             $this->itemRepositoryInterface->save($cartId, $giftMessage, $entityId);
         }
     }
 }
 /**
  * Load already specified quote level gift message.
  *
  * @return \Magento\GiftMessage\Api\Data\MessageInterface|null
  */
 protected function getOrderLevelGiftMessages()
 {
     $cartId = $this->checkoutSession->getQuoteId();
     return $this->cartRepository->get($cartId);
 }