/** * @param string $sku * @return string[] */ public function getProductStatusMatchingSku($sku) { $this->validateSku($sku); $this->searchCriteriaBuilder->addFilter('sku', '%' . $sku . '%', 'like'); $result = $this->productRepository->getList($this->searchCriteriaBuilder->create()); return array_reduce($result->getItems(), function ($acc, ProductInterface $product) { return array_merge($acc, [$product->getSku() => $this->getStatusAsString($product)]); }, []); }
/** * @param string $sku * @return string[] */ public function getStatusForProductsMatchingSku($sku) { $this->validateSku($sku); $this->searchCriteriaBuilder->addFilter('sku', $this->getLikeSkuExpression($sku), 'like'); $productList = $this->productRepository->getList($this->searchCriteriaBuilder->create()); return array_reduce($productList->getItems(), function (array $carry, ProductInterface $product) { return array_merge($carry, [$product->getSku() => $this->getStatusString($product)]); }, []); }
/** * getItems method * * @return array */ public function getItems() { $result = []; $query = $this->queryFactory->get()->getQueryText(); $productIds = $this->searchProductsFullText($query); // Check if products are found if ($productIds) { $searchCriteria = $this->searchCriteriaBuilder->addFilter('entity_id', $productIds, 'in')->create(); $products = $this->productRepository->getList($searchCriteria); foreach ($products->getItems() as $product) { $image = $this->imageHelper->init($product, 'product_page_image_small')->getUrl(); $resultItem = $this->itemFactory->create(['title' => $product->getName(), 'price' => $this->priceCurrency->format($product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue(), false), 'special_price' => $this->priceCurrency->format($product->getPriceInfo()->getPrice('special_price')->getAmount()->getValue(), false), 'has_special_price' => $product->getSpecialPrice() > 0 ? true : false, 'image' => $image, 'url' => $product->getProductUrl()]); $result[] = $resultItem; } } return $result; }
/** * {@inheritdoc} */ public function getItems() { $result = []; $query = $this->queryFactory->get()->getQueryText(); $productIds = $this->searchProductsFullText($query); // Check if products are found if ($productIds) { $searchCriteria = $this->searchCriteriaBuilder->addFilter('entity_id', $productIds, 'in')->create(); $products = $this->productRepository->getList($searchCriteria); $baseUrl = $this->storeManager->getStore()->getBaseUrl(); // Loop through products foreach ($products->getItems() as $product) { $resultItem = $this->itemFactory->create(['title' => $product->getName(), 'price' => $this->priceCurrency->format($product->getFinalPrice(), false), 'special_price' => $this->priceCurrency->format($product->getSpecialPrice(), false), 'has_special_price' => $product->getSpecialPrice() > 0 ? true : false, 'image' => str_replace('index.php/', '', $baseUrl) . '/pub/media/catalog/product' . $product->getImage(), 'url' => $product->getProductUrl()]); $result[] = $resultItem; } } return $result; }
/** * @return \Magento\Catalog\Api\Data\ProductSearchResultsInterface */ public function getProducts() { $filters = $this->buildFilters(); $searchCriteria = $this->buildSearchCriteria($filters); return $this->productRepository->getList($searchCriteria); }
/** * @return \Magento\Catalog\Api\Data\ProductSearchResultsInterface */ public function getProducts() { $this->addFilterType(); $this->addFilterStatus(); return $this->productRepository->getList($this->searchCriteriaBuilder->create()); }