123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\GiftMessage\Model;
- use Magento\Framework\Exception\CouldNotSaveException;
- use Magento\Framework\Exception\InputException;
- use Magento\Framework\Exception\State\InvalidTransitionException;
- use Magento\Framework\Exception\NoSuchEntityException;
- /**
- * Shopping cart gift message item repository object for registered customer
- */
- class ItemRepository implements \Magento\GiftMessage\Api\ItemRepositoryInterface
- {
- /**
- * Quote repository.
- *
- * @var \Magento\Quote\Api\CartRepositoryInterface
- */
- protected $quoteRepository;
- /**
- * Store manager interface.
- *
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- protected $storeManager;
- /**
- * Gift message manager.
- *
- * @var \Magento\GiftMessage\Model\GiftMessageManager
- */
- protected $giftMessageManager;
- /**
- * Message helper.
- *
- * @var \Magento\GiftMessage\Helper\Message
- */
- protected $helper;
- /**
- * Message factory.
- *
- * @var \Magento\GiftMessage\Model\MessageFactory
- */
- protected $messageFactory;
- /**
- * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param GiftMessageManager $giftMessageManager
- * @param \Magento\GiftMessage\Helper\Message $helper
- * @param MessageFactory $messageFactory
- */
- public function __construct(
- \Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\GiftMessage\Model\GiftMessageManager $giftMessageManager,
- \Magento\GiftMessage\Helper\Message $helper,
- \Magento\GiftMessage\Model\MessageFactory $messageFactory
- ) {
- $this->quoteRepository = $quoteRepository;
- $this->giftMessageManager = $giftMessageManager;
- $this->storeManager = $storeManager;
- $this->helper = $helper;
- $this->messageFactory = $messageFactory;
- }
- /**
- * @inheritdoc
- */
- public function get($cartId, $itemId)
- {
- /**
- * Quote.
- *
- * @var \Magento\Quote\Model\Quote $quote
- */
- $quote = $this->quoteRepository->getActive($cartId);
- if (!$item = $quote->getItemById($itemId)) {
- throw new NoSuchEntityException(
- __('No item with the provided ID was found in the Cart. Verify the ID and try again.')
- );
- }
- $messageId = $item->getGiftMessageId();
- if (!$messageId) {
- return null;
- }
- /**
- * Model.
- *
- * @var \Magento\GiftMessage\Model\Message $model
- */
- return $this->messageFactory->create()->load($messageId);
- }
- /**
- * @inheritdoc
- */
- public function save($cartId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage, $itemId)
- {
- /**
- * Quote.
- *
- * @var \Magento\Quote\Model\Quote $quote
- */
- $quote = $this->quoteRepository->getActive($cartId);
- if (!$item = $quote->getItemById($itemId)) {
- throw new NoSuchEntityException(
- __(
- 'No product with the "%1" itemId exists in the Cart. Verify your information and try again.',
- $itemId
- )
- );
- }
- if ($item->getIsVirtual()) {
- throw new InvalidTransitionException(__('Gift messages can\'t be used for virtual products.'));
- }
- $messageText = $giftMessage->getMessage();
- if ($messageText && !$this->helper->isMessagesAllowed('items', $quote, $this->storeManager->getStore())) {
- throw new CouldNotSaveException(__("The gift message isn't available."));
- }
- $this->giftMessageManager->setMessage($quote, 'quote_item', $giftMessage, $itemId);
- return true;
- }
- }
|