mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
145 lines
4.5 KiB
PHP
145 lines
4.5 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;
|
|
|
|
/**
|
|
* Order gift message repository object.
|
|
*/
|
|
class OrderRepository implements \Magento\GiftMessage\Api\OrderRepositoryInterface
|
|
{
|
|
/**
|
|
* Order factory.
|
|
*
|
|
* @var \Magento\Sales\Model\OrderFactory
|
|
*/
|
|
protected $orderFactory;
|
|
|
|
/**
|
|
* Store manager interface.
|
|
*
|
|
* @var \Magento\Store\Model\StoreManagerInterface
|
|
*/
|
|
protected $storeManager;
|
|
|
|
/**
|
|
* Gift message save model.
|
|
*
|
|
* @var \Magento\GiftMessage\Model\Save
|
|
*/
|
|
protected $giftMessageSaveModel;
|
|
|
|
/**
|
|
* Message helper.
|
|
*
|
|
* @var \Magento\GiftMessage\Helper\Message
|
|
*/
|
|
protected $helper;
|
|
|
|
/**
|
|
* Message factory.
|
|
*
|
|
* @var \Magento\GiftMessage\Model\MessageFactory
|
|
*/
|
|
protected $messageFactory;
|
|
|
|
/**
|
|
* @param \Magento\Sales\Model\OrderFactory $orderFactory
|
|
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
|
|
* @param \Magento\GiftMessage\Model\Save $giftMessageSaveModel
|
|
* @param \Magento\GiftMessage\Helper\Message $helper
|
|
* @param MessageFactory $messageFactory
|
|
*/
|
|
public function __construct(
|
|
\Magento\Sales\Model\OrderFactory $orderFactory,
|
|
\Magento\Store\Model\StoreManagerInterface $storeManager,
|
|
\Magento\GiftMessage\Model\Save $giftMessageSaveModel,
|
|
\Magento\GiftMessage\Helper\Message $helper,
|
|
\Magento\GiftMessage\Model\MessageFactory $messageFactory
|
|
) {
|
|
$this->orderFactory = $orderFactory;
|
|
$this->giftMessageSaveModel = $giftMessageSaveModel;
|
|
$this->storeManager = $storeManager;
|
|
$this->helper = $helper;
|
|
$this->messageFactory = $messageFactory;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function get($orderId)
|
|
{
|
|
/** @var \Magento\Sales\Api\Data\OrderInterface $order */
|
|
$order = $this->orderFactory->create()->load($orderId);
|
|
|
|
if (!$this->helper->isMessagesAllowed('order', $order, $this->storeManager->getStore())) {
|
|
throw new NoSuchEntityException(
|
|
__("Either no order exists with this ID or gift message isn't allowed.")
|
|
);
|
|
}
|
|
|
|
$messageId = $order->getGiftMessageId();
|
|
if (!$messageId) {
|
|
throw new NoSuchEntityException(
|
|
__('No item with the provided ID was found in the Order. Verify the ID and try again.')
|
|
);
|
|
}
|
|
|
|
return $this->messageFactory->create()->load($messageId);
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function save($orderId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage)
|
|
{
|
|
/** @var \Magento\Sales\Api\Data\OrderInterface $order */
|
|
$order = $this->orderFactory->create()->load($orderId);
|
|
if (!$order->getEntityId()) {
|
|
throw new NoSuchEntityException(__('No order exists with this ID. Verify your information and try again.'));
|
|
}
|
|
|
|
if (0 == $order->getTotalItemCount()) {
|
|
throw new InputException(
|
|
__("Gift messages can't be used for an empty order. Create an order, add an item, and try again.")
|
|
);
|
|
}
|
|
|
|
if ($order->getIsVirtual()) {
|
|
throw new InvalidTransitionException(__("Gift messages can't be used for virtual products."));
|
|
}
|
|
if (!$this->helper->isMessagesAllowed('order', $order, $this->storeManager->getStore())) {
|
|
throw new CouldNotSaveException(__("The gift message isn't available."));
|
|
}
|
|
|
|
$message = [];
|
|
$message[$orderId] = [
|
|
'type' => 'order',
|
|
$giftMessage::CUSTOMER_ID => $giftMessage->getCustomerId(),
|
|
$giftMessage::SENDER => $giftMessage->getSender(),
|
|
$giftMessage::RECIPIENT => $giftMessage->getRecipient(),
|
|
$giftMessage::MESSAGE => $giftMessage->getMessage(),
|
|
];
|
|
|
|
$this->giftMessageSaveModel->setGiftmessages($message);
|
|
try {
|
|
$this->giftMessageSaveModel->saveAllInOrder();
|
|
} catch (\Exception $e) {
|
|
throw new CouldNotSaveException(
|
|
__('The gift message couldn\'t be added to the "%1" order.', $e->getMessage()),
|
|
$e
|
|
);
|
|
}
|
|
return true;
|
|
}
|
|
}
|