/** * Lists all CsServices models. * @return mixed */ public function actionIndex($entity = null, $title = null) { $request = Yii::$app->request; $session = Yii::$app->session; //$session->removeAll(); $entity = $request->get('entity'); $title = $request->get('title'); if ($state = $request->get('st')) { $session->set('state', $state); if ($state == 'gl') { $session->remove('state'); } } $q = $request->get('q'); $queryObjects = $q ? new ActiveDataProvider(['query' => CsObjects::find()->joinWith(['t t'])->where(['like', 't.name', $q])->andWhere('cs_objects.class != "abstract"')->groupBy('cs_objects.id')]) : null; $queryIndustries = $q ? new ActiveDataProvider(['query' => CsIndustries::find()->joinWith(['t t'])->where(['like', 't.name', $q])->groupBy('cs_industries.id')]) : null; //$queryIndustries = ($q) ? $this->suggested_word($q) : null; $queryActions = $q ? new ActiveDataProvider(['query' => CsActions::find()->joinWith(['t t'])->where(['like', 't.name', $q])->groupBy('cs_actions.id')]) : null; $queryProducts = $q ? new ActiveDataProvider(['query' => CsProducts::find()->where(['like', 'name', $q])->andWhere(['or', 'level=1', 'level=2'])]) : null; $object = ($entity == 'o' and $title) ? $this->findObjectByTitle($title) : null; $industry = ($entity == 'i' and $title) ? $this->findIndustryByTitle($title) : null; $action = ($entity == 'a' and $title) ? $this->findActionByTitle($title) : null; $product = ($entity == 'p' and $title) ? $this->findProductByTitle($title) : null; $renderIndex = $object || $industry || $action || $product || $q ? false : true; $searchModel = new CsServicesSearch(); $dataProvider = $searchModel->search(['CsServicesSearch' => ['name' => $q, 'industry_id' => $industry ? $industry->id : null, 'action_id' => $action ? $action->id : null, 'object_id' => $object ? $object->id : null]]); return $this->render('index', ['dataProvider' => $dataProvider, 'renderIndex' => $renderIndex, 'industry' => $industry, 'action' => $action, 'object' => $object, 'product' => $product, 'searchString' => $request->get('q'), 'queryObjects' => $queryObjects, 'queryIndustries' => $queryIndustries, 'queryActions' => $queryActions, 'queryProducts' => $queryProducts, 'countSearchResults' => $this->countSearchResults($dataProvider, $queryObjects, $queryIndustries, $queryActions, $queryProducts), 'countServicesResults' => $this->countServicesResults($dataProvider), 'countIndustriesResults' => $this->countIndustriesResults($queryIndustries), 'countActionsResults' => $this->countActionsResults($queryActions), 'countObjectsResults' => $this->countObjectsResults($queryObjects), 'countProductsResults' => $this->countProductsResults($queryProducts)]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = CsActions::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } // grid filtering conditions $query->andFilterWhere(['id' => $this->id, 'object_mode' => $this->object_mode]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'status', $this->status]); return $dataProvider; }