* @author Sebastian Ertner * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @link http://www.temando.com/ */ class View extends Action { const ADMIN_RESOURCE = 'Temando_Shipping::shipping'; /** * @var ShipmentReferenceRepositoryInterface */ private $shipmentReferenceRepository; /** * @var Escaper */ private $escaper; /** * View constructor. * * @param Context $context * @param ShipmentReferenceRepositoryInterface $shipmentReferenceRepository * @param Escaper $escaper */ public function __construct( Context $context, ShipmentReferenceRepositoryInterface $shipmentReferenceRepository, Escaper $escaper ) { $this->shipmentReferenceRepository = $shipmentReferenceRepository; $this->escaper = $escaper; parent::__construct($context); } /** * @return \Magento\Framework\Controller\AbstractResult */ public function execute() { $extShipmentId = $this->escaper->escapeHtml($this->getRequest()->getParam('shipment_id')); /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); try { $shipmentReference = $this->shipmentReferenceRepository->getByExtShipmentId($extShipmentId); $resultRedirect->setPath('sales/shipment/view', ['shipment_id' => $shipmentReference->getShipmentId()]); } catch (LocalizedException $exception) { $message = "Shipment '$extShipmentId' not found."; $this->messageManager->addExceptionMessage($exception, __($message)); /** @var \Magento\Framework\Controller\Result\Forward $resultForward */ $resultForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD); $resultForward->forward('noroute'); return $resultForward; } return $resultRedirect; } }