47 lines
1.8 KiB
PHP
47 lines
1.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Esun\Customer\Controller\Order;
|
|
|
|
use Esun\Customer\Model\Order\ReceiveOrderService;
|
|
use Magento\Customer\Controller\AbstractAccount;
|
|
use Magento\Customer\Model\Session;
|
|
use Magento\Framework\App\Action\HttpPostActionInterface;
|
|
use Magento\Framework\App\Action\Context;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Magento\Framework\Controller\Result\RedirectFactory;
|
|
use Magento\Framework\Data\Form\FormKey\Validator;
|
|
use Magento\Framework\Message\ManagerInterface;
|
|
|
|
class Receive extends AbstractAccount implements HttpPostActionInterface
|
|
{
|
|
public function __construct(
|
|
Context $context,
|
|
private readonly RequestInterface $request,
|
|
private readonly RedirectFactory $redirectFactory,
|
|
private readonly Validator $formKeyValidator,
|
|
private readonly Session $session,
|
|
private readonly ReceiveOrderService $service,
|
|
private readonly ManagerInterface $messages
|
|
) {
|
|
parent::__construct($context);
|
|
}
|
|
|
|
public function execute()
|
|
{
|
|
$result = $this->redirectFactory->create()->setPath('sales/order/history');
|
|
if (!$this->formKeyValidator->validate($this->request)) {
|
|
$this->messages->addErrorMessage(__('Your session has expired. Please try again.'));
|
|
return $result;
|
|
}
|
|
try {
|
|
$this->service->receive((int)$this->request->getParam('order_id'), (int)$this->session->getCustomerId());
|
|
$this->messages->addSuccessMessage(__('Receipt confirmed. You can now review the products in this order.'));
|
|
} catch (\Throwable $exception) {
|
|
$this->messages->addErrorMessage($exception instanceof \Magento\Framework\Exception\LocalizedException
|
|
? $exception->getMessage() : __('We could not confirm receipt right now.'));
|
|
}
|
|
return $result;
|
|
}
|
|
}
|