123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Block\Order;
- use Magento\Framework\View\Element\Template\Context;
- use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
- use Magento\Customer\Model\Session;
- use Magento\Sales\Model\Order\Config;
- use Magento\Store\Model\StoreManagerInterface;
- use Magento\Framework\App\ObjectManager;
- /**
- * Sales order history block
- *
- * @api
- * @since 100.0.2
- */
- class Recent extends \Magento\Framework\View\Element\Template
- {
- /**
- * Limit of orders
- */
- const ORDER_LIMIT = 5;
- /**
- * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory
- */
- protected $_orderCollectionFactory;
- /**
- * @var \Magento\Customer\Model\Session
- */
- protected $_customerSession;
- /**
- * @var \Magento\Sales\Model\Order\Config
- */
- protected $_orderConfig;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- private $storeManager;
- /**
- * @param \Magento\Framework\View\Element\Template\Context $context
- * @param \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory
- * @param \Magento\Customer\Model\Session $customerSession
- * @param \Magento\Sales\Model\Order\Config $orderConfig
- * @param array $data
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- */
- public function __construct(
- Context $context,
- CollectionFactory $orderCollectionFactory,
- Session $customerSession,
- Config $orderConfig,
- array $data = [],
- StoreManagerInterface $storeManager = null
- ) {
- $this->_orderCollectionFactory = $orderCollectionFactory;
- $this->_customerSession = $customerSession;
- $this->_orderConfig = $orderConfig;
- $this->_isScopePrivate = true;
- $this->storeManager = $storeManager ?: ObjectManager::getInstance()
- ->get(StoreManagerInterface::class);
- parent::__construct($context, $data);
- }
- /**
- * @return void
- */
- protected function _construct()
- {
- parent::_construct();
- $this->getRecentOrders();
- }
- /**
- * Get recently placed orders. By default they will be limited by 5.
- */
- private function getRecentOrders()
- {
- $orders = $this->_orderCollectionFactory->create()->addAttributeToSelect(
- '*'
- )->addAttributeToFilter(
- 'customer_id',
- $this->_customerSession->getCustomerId()
- )->addAttributeToFilter(
- 'store_id',
- $this->storeManager->getStore()->getId()
- )->addAttributeToFilter(
- 'status',
- ['in' => $this->_orderConfig->getVisibleOnFrontStatuses()]
- )->addAttributeToSort(
- 'created_at',
- 'desc'
- )->setPageSize(
- self::ORDER_LIMIT
- )->load();
- $this->setOrders($orders);
- }
- /**
- * @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()]);
- }
- /**
- * @return string
- */
- protected function _toHtml()
- {
- if ($this->getOrders()->getSize() > 0) {
- return parent::_toHtml();
- }
- return '';
- }
- /**
- * @param object $order
- * @return string
- */
- public function getReorderUrl($order)
- {
- return $this->getUrl('sales/order/reorder', ['order_id' => $order->getId()]);
- }
- }
|