mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
137 lines
4.0 KiB
PHP
137 lines
4.0 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;
|
|
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;
|
|
}
|
|
}
|