Exemplo n.º 1
0
 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);
 }
Exemplo n.º 3
0
 /**
  * {@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);
         }
     }
 }
Exemplo n.º 6
0
 /**
  * {@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);
 }
Exemplo n.º 7
0
 /**
  * {@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);
 }