_orderCollectionFactory = $orderCollectionFactory; $this->_customerSession = $customerSession; $this->_orderConfig = $orderConfig; parent::__construct($context, $data); } /** * @return void */ protected function _construct() { parent::_construct(); $this->pageConfig->getTitle()->set(__('My Orders')); } /** * @return CollectionFactoryInterface * * @deprecated 100.1.1 */ private function getOrderCollectionFactory() { if ($this->orderCollectionFactory === null) { $this->orderCollectionFactory = ObjectManager::getInstance()->get(CollectionFactoryInterface::class); } return $this->orderCollectionFactory; } /** * @return bool|\Magento\Sales\Model\ResourceModel\Order\Collection */ public function getOrders() { if (!($customerId = $this->_customerSession->getCustomerId())) { return false; } if (!$this->orders) { $this->orders = $this->getOrderCollectionFactory()->create($customerId)->addFieldToSelect( '*' )->addFieldToFilter( 'status', ['in' => $this->_orderConfig->getVisibleOnFrontStatuses()] )->setOrder( 'created_at', 'desc' ); } return $this->orders; } /** * @return $this */ protected function _prepareLayout() { parent::_prepareLayout(); if ($this->getOrders()) { $pager = $this->getLayout()->createBlock( \Magento\Theme\Block\Html\Pager::class, 'sales.order.history.pager' )->setCollection( $this->getOrders() ); $this->setChild('pager', $pager); $this->getOrders()->load(); } return $this; } /** * @return string */ public function getPagerHtml() { return $this->getChildHtml('pager'); } /** * @param object $order * @return string */ public function getViewUrl($order) { return $this->getUrl('sales/order/view', ['order_id' => $order->getId()]); } /** * @param object $order * @return string */ public function getTrackUrl($order) { return $this->getUrl('sales/order/track', ['order_id' => $order->getId()]); } /** * @param object $order * @return string */ public function getReorderUrl($order) { return $this->getUrl('sales/order/reorder', ['order_id' => $order->getId()]); } /** * @return string */ public function getBackUrl() { return $this->getUrl('customer/account/'); } }