13 use \Magento\Sales\Model\Order;
61 private $orderRepository;
66 private $searchCriteriaBuilder;
86 private $storeManager;
91 private $inputExceptionMessage =
'You entered incorrect data. Please try again.';
130 ->get(\
Magento\Sales\Api\OrderRepositoryInterface::class);
132 ->get(\
Magento\Framework\Api\SearchCriteriaBuilder::class);
150 if ($this->customerSession->isLoggedIn()) {
151 return $this->resultRedirectFactory->create()->setPath(
'sales/order/history');
154 $fromCookie = $this->cookieManager->getCookie(self::COOKIE_NAME);
155 if (empty($post) && !$fromCookie) {
156 return $this->resultRedirectFactory->create()->setPath(
'sales/guest/form');
162 && isset($post[
'oar_order_id'], $post[
'oar_type'])
163 && !$this->hasPostDataEmptyFields($post))
164 ? $this->loadFromPost($post) : $this->loadFromCookie($fromCookie);
165 $this->coreRegistry->register(
'current_order',
$order);
168 $this->messageManager->addErrorMessage($e->getMessage());
169 return $this->resultRedirectFactory->create()->setPath(
'sales/guest/form');
181 $breadcrumbs = $resultPage->getLayout()->getBlock(
'breadcrumbs');
185 $breadcrumbs->addCrumb(
188 'label' =>
__(
'Home'),
189 'title' =>
__(
'Go to Home Page'),
190 'link' => $this->storeManager->getStore()->getBaseUrl()
193 $breadcrumbs->addCrumb(
195 [
'label' =>
__(
'Order Information'),
'title' =>
__(
'Order Information')]
208 private function setGuestViewCookie($cookieValue)
210 $metadata = $this->cookieMetadataFactory->createPublicCookieMetadata()
211 ->setPath(self::COOKIE_PATH)
213 $this->cookieManager->setPublicCookie(self::COOKIE_NAME, $cookieValue, $metadata);
225 private function loadFromCookie($fromCookie)
227 $cookieData = explode(
':', base64_decode($fromCookie));
228 $protectCode = isset($cookieData[0]) ? $cookieData[0] :
null;
229 $incrementId = isset($cookieData[1]) ? $cookieData[1] :
null;
230 if (!empty($protectCode) && !empty($incrementId)) {
231 $order = $this->getOrderRecord($incrementId);
232 if (hash_equals((
string)
$order->getProtectCode(), $protectCode)) {
233 $this->setGuestViewCookie($fromCookie);
237 throw new InputException(
__($this->inputExceptionMessage));
249 private function loadFromPost(array
$postData)
254 throw new InputException(
__(
'You entered incorrect data. Please try again.'));
256 $toCookie = base64_encode(
$order->getProtectCode() .
':' .
$postData[
'oar_order_id']);
257 $this->setGuestViewCookie($toCookie);
268 private function compareStoredBillingDataWithInput(Order
$order, array
$postData)
272 $lastName =
$postData[
'oar_billing_lastname'];
275 return strtolower($lastName) === strtolower(
$billingAddress->getLastname()) &&
286 private function hasPostDataEmptyFields(array
$postData)
288 return empty(
$postData[
'oar_order_id']) || empty(
$postData[
'oar_billing_lastname']) ||
289 empty(
$postData[
'oar_type']) || empty($this->storeManager->getStore()->getId()) ||
290 !in_array(
$postData[
'oar_type'], [
'email',
'zip'],
true) ||
302 private function getOrderRecord($incrementId)
304 $records = $this->orderRepository->getList(
305 $this->searchCriteriaBuilder
306 ->addFilter(
'increment_id', $incrementId)
307 ->addFilter(
'store_id', $this->storeManager->getStore()->getId())
311 $items = $records->getItems();
313 throw new InputException(
__($this->inputExceptionMessage));
316 return array_shift(
$items);
getBreadcrumbs(\Magento\Framework\View\Result\Page $resultPage)
loadValidOrder(App\RequestInterface $request)
__construct(App\Helper\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\Registry $coreRegistry, \Magento\Customer\Model\Session $customerSession, \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager, \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory, \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory, \Magento\Sales\Api\OrderRepositoryInterface $orderRepository=null, \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteria=null)