/**
  * {@inheritdoc}
  */
 public function resolve(RequestInterface $request, array $documentIds)
 {
     $data = $this->config->get($request->getName());
     $bucketKeys = isset($data['aggregations']) ? array_keys($data['aggregations']) : [];
     $attributeCodes = $this->getApplicableAttributeCodes($documentIds);
     $resolvedAggregation = array_filter($request->getAggregation(), function ($bucket) use($attributeCodes, $bucketKeys) {
         /** @var BucketInterface $bucket */
         return in_array($bucket->getField(), $attributeCodes) || in_array($bucket->getName(), $bucketKeys);
     });
     return array_values($resolvedAggregation);
 }
Example #2
0
 /**
  * @param RequestInterface $request
  * @param Table $documentsTable
  * @return array
  */
 private function processAggregations(RequestInterface $request, Table $documentsTable)
 {
     $aggregations = [];
     $buckets = $request->getAggregation();
     $dataProvider = $this->dataProviderContainer->get($request->getIndex());
     foreach ($buckets as $bucket) {
         $aggregationBuilder = $this->aggregationContainer->get($bucket->getType());
         $aggregations[$bucket->getName()] = $aggregationBuilder->build($dataProvider, $request->getDimensions(), $bucket, $documentsTable);
     }
     return $aggregations;
 }