public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations']['agg_sales'])) { return; } $data = $elasticResult['aggregations']['agg_sales']; $actives = $this->getActiveValues($criteria, $data); $facetResult = new RangeFacetResult('swag_product_es_sales', $criteria->hasCondition('swag_es_product_sales'), 'Sales', $data['min'], $data['max'], $actives['min'], $actives['max'], 'minSales', 'maxSales'); $result->addFacet($facetResult); }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations'])) { return; } if (!isset($elasticResult['aggregations']['agg_has_available_variant_filter'])) { return; } $data = $elasticResult['aggregations']['agg_has_available_variant_filter']['agg_has_available_variant_count']; if ($data['value'] <= 0) { return; } $criteriaPart = $this->createFacet($criteria); $result->addFacet($criteriaPart); }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations'])) { return; } if (!isset($elasticResult['aggregations']['agg_price'])) { return; } $data = $elasticResult['aggregations']['agg_price']; if ($data['count'] <= 0) { return; } $criteriaPart = $this->createFacet($criteria, (double) $data['min'], (double) $data['max']); $result->addFacet($criteriaPart); }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations']['agg_manufacturer'])) { return; } $buckets = $elasticResult['aggregations']['agg_manufacturer']['buckets']; if (empty($buckets)) { return; } $manufacturers = $this->getManufacturers($buckets, $context); $items = $this->createListItems($criteria, $manufacturers); $criteriaPart = $this->createFacet($criteria, $items); $result->addFacet($criteriaPart); }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations'])) { return; } $aggregations = $elasticResult['aggregations']; foreach ($this->criteriaParts as $criteriaPart) { $key = 'agg_' . $criteriaPart->getName(); if (!isset($aggregations[$key])) { continue; } switch ($criteriaPart->getMode()) { case ProductAttributeFacet::MODE_VALUE_LIST_RESULT: case ProductAttributeFacet::MODE_RADIO_LIST_RESULT: $criteriaPartResult = $this->createItemListResult($criteriaPart, $aggregations[$key], $criteria); break; case ProductAttributeFacet::MODE_BOOLEAN_RESULT: $criteriaPartResult = $this->createBooleanResult($criteriaPart, $aggregations[$key], $criteria); break; case ProductAttributeFacet::MODE_RANGE_RESULT: $criteriaPartResult = $this->createRangeResult($criteriaPart, $aggregations[$key], $criteria); break; default: $criteriaPartResult = null; } if ($criteriaPartResult) { $result->addFacet($criteriaPartResult); } } }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations'])) { return; } if (!isset($elasticResult['aggregations']['agg_properties'])) { return; } $data = $elasticResult['aggregations']['agg_properties']['buckets']; $ids = array_column($data, 'key'); if (empty($ids)) { return; } $groupIds = $this->getGroupIds($ids); $search = new Search(); $search->addFilter(new IdsFilter($groupIds)); $search->addFilter(new TermFilter('filterable', 1)); $search->addSort(new FieldSort('name')); $index = $this->indexFactory->createShopIndex($context->getShop()); $data = $this->client->search(['index' => $index->getName(), 'type' => PropertyMapping::TYPE, 'body' => $search->toArray()]); $data = $data['hits']['hits']; $properties = $this->hydrateProperties($data, $ids); $actives = $this->getFilteredValues($criteria); $criteriaPart = $this->createCollectionResult($properties, $actives); $result->addFacet($criteriaPart); }
/** * {@inheritdoc} */ public function hydrate(array $elasticResult, ProductNumberSearchResult $result, Criteria $criteria, ShopContextInterface $context) { if (!isset($elasticResult['aggregations'])) { return; } if (!isset($elasticResult['aggregations']['agg_category'])) { return; } $data = $elasticResult['aggregations']['agg_category']['buckets']; $ids = $this->getCategoryIds($criteria, $data); $categories = $this->categoryService->getList($ids, $context); $active = []; if ($criteria->hasCondition('category')) { /**@var $condition CategoryCondition*/ $condition = $criteria->getCondition('category'); $active = $condition->getCategoryIds(); } $criteriaPart = $this->createTreeFacet($categories, $active); $result->addFacet($criteriaPart); }