/**
  * @param QueryBuilder $query
  * @param ProductAttributeFacet $facet
  * @param Criteria $criteria
  * @return null|BooleanFacetResult
  */
 private function createBooleanFacetResult(QueryBuilder $query, ProductAttributeFacet $facet, Criteria $criteria)
 {
     $sqlField = 'productAttribute.' . $facet->getField();
     $query->select('COUNT(' . $sqlField . ')');
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $result = $statement->fetch(\PDO::FETCH_COLUMN);
     if (empty($result)) {
         return null;
     }
     return new BooleanFacetResult($facet->getName(), $facet->getFormFieldName(), $criteria->hasCondition($facet->getName()), $facet->getLabel());
 }
 /**
  * @param ProductAttributeFacet $criteriaPart
  * @param $data
  * @param Criteria $criteria
  * @return RangeFacetResult
  */
 private function createRangeResult(ProductAttributeFacet $criteriaPart, $data, Criteria $criteria)
 {
     $values = array_column($data['buckets'], 'key');
     $min = min($values);
     $max = max($values);
     $template = $criteriaPart->getTemplate();
     if (!$template) {
         $template = 'frontend/listing/filter/facet-range.tpl';
     }
     $activeMin = $min;
     $activeMax = $max;
     /**@var $condition ProductAttributeCondition*/
     if ($condition = $criteria->getCondition($criteriaPart->getName())) {
         $data = $condition->getValue();
         $activeMin = $data['min'];
         $activeMax = $data['max'];
     }
     return new RangeFacetResult($criteriaPart->getName(), $criteria->hasCondition($criteriaPart->getName()), $criteriaPart->getLabel(), $min, $max, $activeMin, $activeMax, 'min' . $criteriaPart->getFormFieldName(), 'max' . $criteriaPart->getFormFieldName(), [], $template);
 }