/** * Retrieve tax classes which match a specific criteria. * * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria * @return \Magento\Tax\Service\V1\Data\TaxClassSearchResults containing Data\TaxClass * @throws \Magento\Framework\Exception\InputException */ public function searchTaxClass(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria) { $this->searchResultsBuilder->setSearchCriteria($searchCriteria); /** @var TaxClassCollection $collection */ $collection = $this->taxClassCollectionFactory->create(); /** TODO: This method duplicates functionality of search methods in other services and should be refactored. */ foreach ($searchCriteria->getFilterGroups() as $group) { $this->addFilterGroupToCollection($group, $collection); } $this->searchResultsBuilder->setTotalCount($collection->getSize()); $sortOrders = $searchCriteria->getSortOrders(); if ($sortOrders) { foreach ($searchCriteria->getSortOrders() as $field => $direction) { $collection->addOrder($field, $direction == SearchCriteria::SORT_ASC ? 'ASC' : 'DESC'); } } $collection->setCurPage($searchCriteria->getCurrentPage()); $collection->setPageSize($searchCriteria->getPageSize()); $taxClasses = []; /** @var \Magento\Tax\Model\ClassModel $taxClassModel */ foreach ($collection->getItems() as $taxClassModel) { $taxClasses[] = $this->converter->createTaxClassData($taxClassModel); } $this->searchResultsBuilder->setItems($taxClasses); return $this->searchResultsBuilder->create(); }