<?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;
/**
* Shopping cart gift message repository object for registered customer
*/
class CartRepository implements \Magento\GiftMessage\Api\CartRepositoryInterface
{
/**
* 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)
{
/** @var \Magento\Quote\Model\Quote $quote */
$quote = $this->quoteRepository->getActive($cartId);
$messageId = $quote->getGiftMessageId();
if (!$messageId) {
return null;
}
return $this->messageFactory->create()->load($messageId);
}
/**
* {@inheritDoc}
*/
public function save($cartId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage)
{
/**
* Quote.
*
* @var \Magento\Quote\Model\Quote $quote
*/
$quote = $this->quoteRepository->getActive($cartId);
if (0 == $quote->getItemsCount()) {
throw new InputException(__("Gift messages can't be used for an empty cart. Add an item and try again."));
}
if ($quote->isVirtual()) {
throw new InvalidTransitionException(__("Gift messages can't be used for virtual products."));
}
$messageText = $giftMessage->getMessage();
if ($messageText && !$this->helper->isMessagesAllowed('quote', $quote, $this->storeManager->getStore())) {
throw new CouldNotSaveException(__("The gift message isn't available."));
}
$this->giftMessageManager->setMessage($quote, 'quote', $giftMessage);
return true;
}
}
|