예제 #1
0
 /**
  * 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);
         }
     }
 }
예제 #2
0
 /**
  * Load already specified item level gift messages.
  *
  * @return \Magento\GiftMessage\Api\Data\MessageInterface[]|null
  */
 protected function getItemLevelGiftMessages()
 {
     $itemMessages = [];
     $cartId = $this->checkoutSession->getQuoteId();
     $items = $this->checkoutSession->getQuote()->getAllVisibleItems();
     foreach ($items as $item) {
         $itemId = $item->getId();
         $message = $this->itemRepository->get($cartId, $itemId);
         if ($message) {
             $itemMessages[$itemId] = $message->getData();
         }
     }
     return count($itemMessages) === 0 ? null : $itemMessages;
 }
 /**
  * Load already specified item level gift messages and related configuration.
  *
  * @return \Magento\GiftMessage\Api\Data\MessageInterface[]|null
  */
 protected function getItemLevelGiftMessages()
 {
     $itemLevelConfig = [];
     $quote = $this->checkoutSession->getQuote();
     foreach ($quote->getAllVisibleItems() as $item) {
         $itemId = $item->getId();
         $itemLevelConfig[$itemId] = [];
         $isMessageAvailable = $item->getProduct()->getGiftMessageAvailable();
         // use gift message product setting if it is available
         if ($isMessageAvailable !== null) {
             $itemLevelConfig[$itemId]['is_available'] = (bool) $isMessageAvailable;
         }
         $message = $this->itemRepository->get($quote->getId(), $itemId);
         if ($message) {
             $itemLevelConfig[$itemId]['message'] = $message->getData();
         }
     }
     return count($itemLevelConfig) === 0 ? null : $itemLevelConfig;
 }