/**
  * Страница поиска
  */
 public function actionSearch()
 {
     $this->showSearchBlock = true;
     $this->openAdvSearchBlock = true;
     $searchQuery = Yii::$app->request->get('q');
     $searchQueryPrice_min = (int) Yii::$app->request->get('price_min');
     $searchQueryPrice_max = (int) Yii::$app->request->get('price_max');
     $searchQueryCat = (int) Yii::$app->request->get('cat');
     $searchQueryOrg = (array) Yii::$app->request->get('org');
     $searchQuerySpec = (int) Yii::$app->request->get('spec');
     $searchQuerySpecType = (int) Yii::$app->request->get('spec_type');
     $searchQueryDiagnos = (int) Yii::$app->request->get('diagnos');
     $query = Product::find()->joinWith(['type']);
     // Поисковой запрос
     if ($searchQuery) {
         $query->where(['like', 'keywords', $searchQuery]);
     } else {
         $query->where([]);
     }
     if ($searchQuerySpecType) {
         $query->joinWith(['specType'])->andFilterWhere(['tbl_specialist_has_type.spec_type_id' => $searchQuerySpecType, 'tbl_specialist_type.id' => $searchQuerySpecType]);
     }
     if ($searchQueryDiagnos) {
         $query->joinWith(['diagnos'])->andFilterWhere(['tbl_product_type_has_diagnos.diagnos_id' => $searchQueryDiagnos, 'tbl_diagnos.id' => $searchQueryDiagnos]);
     }
     //если указана цена
     if ($searchQueryPrice_min > 0 && $searchQueryPrice_max > 0) {
         $query->andFilterWhere([">", 'price_discount', $searchQueryPrice_min]);
         $query->andFilterWhere(["<", 'price_discount', $searchQueryPrice_max]);
     }
     //если указана категория или тип заболевания
     if ($searchQueryCat > 0) {
         $query->andFilterWhere(['cat_id' => $searchQueryCat]);
     }
     //Если указаны организации
     if (count($searchQueryOrg) > 0) {
         $query->andFilterWhere(['in', 'organization_id', $searchQueryOrg]);
     }
     //если указан специалист
     if ($searchQuerySpec) {
         $query->andFilterWhere(['specialist_id' => $searchQuerySpec]);
     }
     //http://ihealthdev.upmc.ru/search?q=%D0%BB%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&price_min=1000&price_max=200000&cat=21&org=7&spec_type=2&spec=2
     //echo $query->createCommand()->getRawSql();
     //die;
     $countQuery = clone $query;
     $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 20]);
     $_productList = $query->offset($pages->offset)->limit($pages->limit)->with(['type', 'organization', 'specialist'])->asArray()->all();
     //Получаем новые поля price_format и price_discount_format в виде number_format
     Product::format($_productList);
     //Заболевания диагноз parent_id > 0
     //$catList = ArrayHelper::index( ProductCat::find()->where(['>','parent_id',0])->asArray()->all(), 'id' );
     //Список организаций
     //$orgList = ArrayHelper::index(Organization::find()->asArray()->all(), 'id');
     //Список специалистов
     //$specList = ArrayHelper::index(Specialist::find()->asArray()->all(), 'id');
     $productList = ['diagnost' => ['title' => 'Диагностика', 'desc' => 'Уточните свой диагноз и проблемную область', 'list' => []], 'program' => ['title' => 'Программы лечения', 'desc' => 'Посмотрите программы лечения и выберите свой курс лечения', 'list' => []], 'spec' => ['title' => 'Специалисты', 'desc' => 'Проконсультируйтесь с ведущими специлистами', 'list' => []]];
     foreach ($_productList as $item) {
         if ($item['type']) {
             if ($item['specialist_id'] > 0) {
                 $productList['spec']['list'][$item['id']] = $item;
             } elseif ($item['type']['type_index'] == 1) {
                 $productList['diagnost']['list'][$item['id']] = $item;
             } elseif ($item['type']['type_index'] == 2) {
                 $productList['program']['list'][$item['id']] = $item;
             }
         }
     }
     /*print '<pre>';
       echo count($productList['spec']['list']);
       print_r ($productList['spec']['list']);
       print '</pre>';
       die;*/
     // RightBlock data
     $typeIds = ArrayHelper::getColumn($_productList, 'type_id');
     $blockData['productList'] = Product::LoadList('*', 'priority > 0', 'priority desc', 3);
     $blockData['orgList'] = Organization::LoadList('*', 'priority > 0', 'priority desc', 2);
     return $this->render('search', ['query' => $searchQuery, 'productList' => $productList, 'productPages' => $pages, 'blockData' => $blockData]);
 }