<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Checkout\Controller\Account;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\Exception\AlreadyExistsException;
use Magento\Framework\Exception\NoSuchEntityException;
/**
* @deprecated 100.2.5
* @see DelegateCreate
*/
class Create extends \Magento\Framework\App\Action\Action
{
/**
* @var \Magento\Checkout\Model\Session
*/
protected $checkoutSession;
/**
* @var \Magento\Customer\Model\Session
*/
protected $customerSession;
/**
* @var \Magento\Sales\Api\OrderCustomerManagementInterface
*/
protected $orderCustomerService;
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param \Magento\Customer\Model\Session $customerSession
* @param \Magento\Sales\Api\OrderCustomerManagementInterface $orderCustomerService
* @codeCoverageIgnore
*/
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Checkout\Model\Session $checkoutSession,
\Magento\Customer\Model\Session $customerSession,
\Magento\Sales\Api\OrderCustomerManagementInterface $orderCustomerService
) {
$this->checkoutSession = $checkoutSession;
$this->customerSession = $customerSession;
$this->orderCustomerService = $orderCustomerService;
parent::__construct($context);
}
/**
* Execute request
*
* @throws AlreadyExistsException
* @throws NoSuchEntityException
* @throws \Exception
* @return \Magento\Framework\Controller\Result\Json
*/
public function execute()
{
/** @var \Magento\Framework\Controller\Result\Json $resultJson */
$resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
if ($this->customerSession->isLoggedIn()) {
return $resultJson->setData(
[
'errors' => true,
'message' => __('Customer is already registered')
]
);
}
$orderId = $this->checkoutSession->getLastOrderId();
if (!$orderId) {
return $resultJson->setData(
[
'errors' => true,
'message' => __('Your session has expired')
]
);
}
try {
$this->orderCustomerService->create($orderId);
return $resultJson->setData(
[
'errors' => false,
'message' => __('A letter with further instructions will be sent to your email.')
]
);
} catch (\Exception $e) {
$this->messageManager->addExceptionMessage($e, $e->getMessage());
throw $e;
}
}
}
|