![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/app/code/Cnc/Sales/ViewModel/ |
<?php namespace Cnc\Sales\ViewModel; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Api\SearchCriteriaBuilderFactory; use Magento\Framework\Api\SortOrderBuilder; use Magento\Framework\Api\SortOrderBuilderFactory; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Framework\View\Element\Block\ArgumentInterface; use Magento\Sales\Api\Data\OrderSearchResultInterface; use Magento\Sales\Api\OrderRepositoryInterface; class LastOrders implements ArgumentInterface { /** * @var OrderRepositoryInterface */ private $orderRepository; /** * @var SearchCriteriaBuilder */ private $searchCriteriaBuilderFactory; /** * @var SortOrderBuilderFactory */ private $sortOrderBuilderFactory; /** * @var PriceCurrencyInterface */ private $priceCurrency; /** * LastOrders constructor. * @param OrderRepositoryInterface $orderRepository * @param SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory * @param SortOrderBuilderFactory $sortOrderBuilderFactory * @param PriceCurrencyInterface $priceCurrency */ public function __construct( OrderRepositoryInterface $orderRepository, SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory, SortOrderBuilderFactory $sortOrderBuilderFactory, PriceCurrencyInterface $priceCurrency ) { $this->orderRepository = $orderRepository; $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory; $this->sortOrderBuilderFactory = $sortOrderBuilderFactory; $this->priceCurrency = $priceCurrency; } /** * Get last few orders of customer. * * @param $customerId * @param array $excludeIds * @param int $count * @return array|OrderSearchResultInterface */ public function getLastOrders($customerId, $excludeIds = [], $count = 5) { if (!$customerId) { return []; } /** @var SearchCriteriaBuilder $searchCriteriaBuilder */ $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create(); $searchCriteriaBuilder->addFilter('customer_id', $customerId); if ($excludeIds) { $searchCriteriaBuilder->addFilter('entity_id', $excludeIds, 'nin'); } $searchCriteriaBuilder->setPageSize($count); /** @var SortOrderBuilder $sort */ $sortBuilder = $this->sortOrderBuilderFactory->create(); $sort = $sortBuilder ->setField('entity_id') ->setDirection('DESC') ->create(); $searchCriteriaBuilder->addSortOrder($sort); $searchCriteria = $searchCriteriaBuilder->create(); return $this->orderRepository->getList($searchCriteria); } /** * Format price. * * @param $price * @return string */ public function formatPrice($price) { return (string) $this->priceCurrency->format($price, false); } }