Files
2026-09-15 10:35:56 +08:00

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;
}
}