public function setupQueryResultSet()
{
$results = [];
foreach ($this->getSectionList() as $section) {
$setupAggs = $section == $this->getSection() ? true : false;
$nativeQuery = $this->nativeQueryGenerator->generateNativeQuery($section, $setupAggs);
if ($nativeQuery === false) {
continue;
}
/** @var \Elastica\ResultSet $resultData */
$resultData = $this->container->get('fos_elastica.index.search.' . $section)->search($nativeQuery);
if ($resultData->getTotalHits() < 1) {
continue;
}
$this->setTotalHit($this->getTotalHit() + $resultData->getTotalHits());
if ($section !== $this->getSection()) {
$results[$section]['total_item'] = $resultData->getTotalHits();
$results[$section]['type'] = $this->translator->trans($section);
continue;
}
$this->setCurrectSectionHit($resultData->getTotalHits());
/**
* @var Result $object
*/
foreach ($resultData as $resultObject) {
$objectDetail = $this->getObjectDetail($resultObject);
$results[$section]['total_item'] = $resultData->getTotalHits();
$results[$section]['type'] = $this->translator->trans($section);
$result['detail'] = $objectDetail;
$result['source'] = $resultObject->getSource();
$results[$section]['data'][] = $result;
}
$resultAggs = $resultData->getAggregations();
foreach ($resultAggs as $aggKey => $agg) {
if (count($agg['buckets']) < 1) {
unset($resultAggs[$aggKey]);
}
}
$this->setAggs($resultAggs);
}
$this->setResultSet($results);
return $this;
}