mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
118 lines
3.4 KiB
PHP
118 lines
3.4 KiB
PHP
<?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;
|
|
}
|
|
}
|