public function getFilters(Layer $layer)
 {
     if (!$this->helper->isActiveEngine()) {
         return parent::getFilters($layer);
     }
     if (!count($this->filters)) {
         $this->filters = [];
         // $response = $this->_getResponse($layer);
         $response = $this->searchHelper->getCustomResults();
         $questions = $response->QwiserSearchResults->Questions;
         $aaa = '';
         foreach ($questions->children() as $question) {
             $this->filters[] = $this->createQuestionFilter($question, $layer);
             $this->appliedFilters[] = $question->getAttribute('Text');
         }
     }
     $remFilters = array_diff($this->searchHelper->getFilterRequestVars(), $this->appliedFilters);
     foreach ($this->request->getParams() as $var => $value) {
         if (in_array($var, $remFilters)) {
             $question = $this->searchHelper->getQuestionByField($var, 'Text');
             if ($question) {
                 $this->createQuestionFilter($question, $layer)->apply($this->request);
                 $this->appliedFilters[] = $var;
             }
         }
     }
     return $this->filters;
 }
 protected function _getResponse()
 {
     if (is_null($this->response)) {
         $params = $this->searchHelper->getSearchParams();
         $this->response = $this->searchHelper->getCustomResults($params);
     }
     return $this->response;
 }
 public function isSelected()
 {
     $previous_search = $this->searchHelper->getFilterValue($this->getFilter()->getRequestVar());
     if ($previous_search && in_array($this->getValue(), explode(',', $previous_search))) {
         return true;
     }
     return false;
 }
 protected function _construct()
 {
     parent::_construct();
     if ($this->helper->isActiveEngine()) {
         $blockData = $this->searchHelper->getToolbarData();
         foreach ($blockData->getData() as $key => $param) {
             $this->setData($key, $param);
         }
     }
 }
 protected function generateQuickSearchRequest()
 {
     $response = $this->searchHelper->getAllQuestions();
     $request = [];
     if (!empty($response->Questions)) {
         foreach ($response->Questions->children() as $question) {
             $name = $question->getAttribute('Text');
             $queryName = $name . '_query';
             $request['queries']['quick_search_container']['queryReference'][] = ['clause' => 'should', 'ref' => $queryName];
             $filterName = $name . self::FILTER_SUFFIX;
             $request['queries'][$queryName] = ['name' => $queryName, 'type' => QueryInterface::TYPE_FILTER, 'filterReference' => [['ref' => $filterName]]];
             $bucketName = $name . self::BUCKET_SUFFIX;
             $request['filters'][$filterName] = ['type' => FilterInterface::TYPE_TERM, 'name' => $filterName, 'field' => $name, 'value' => '$' . $name . '$'];
             $request['aggregations'][$bucketName] = ['type' => BucketInterface::TYPE_TERM, 'name' => $bucketName, 'field' => $name, 'metric' => [["type" => "count"]]];
         }
     }
     return $request;
 }
 public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Session $catalogSession, \Magento\Catalog\Model\Config $catalogConfig, ToolbarModel $toolbarModel, \Magento\Framework\Url\EncoderInterface $urlEncoder, \Magento\Catalog\Helper\Product\ProductList $productListHelper, \Magento\Framework\Data\Helper\PostHelper $postDataHelper, \Magento\Framework\Registry $registry, \Celebros\ConversionPro\Helper\Data $helper, \Celebros\ConversionPro\Helper\Search $searchHelper, array $data = [])
 {
     $this->registry = $registry;
     $this->helper = $helper;
     $this->searchHelper = $searchHelper;
     parent::__construct($context, $catalogSession, $catalogConfig, $toolbarModel, $urlEncoder, $productListHelper, $postDataHelper, $data);
     if ($this->helper->isActiveEngine() && $this->helper->isPermittedHandle()) {
         // set block module name required to use same template as original
         $this->setModuleName('Magento_Catalog');
         // set current page, limit, order to search helper instead of collection
         $this->searchHelper->setCurrentPage($this->getCurrentPage());
         $this->searchHelper->setPageSize($this->getLimit());
         $this->setDefaultDirection('asc');
         if (!$this->_getData('_current_grid_order') && !$this->_toolbarModel->getOrder() || in_array($this->getCurrentOrder(), ['relevance', 'position'])) {
             $this->setDefaultDirection('desc');
         }
         $this->searchHelper->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
         $blockData = $this->searchHelper->getToolbarData();
         foreach ($blockData->getData() as $key => $param) {
             $this->setData($key, $param);
         }
     }
 }