public function search($params, $pageSize = 20) { $query = self::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $pageSize]]); if (!($this->load($params) and $this->validate())) { return $dataProvider; } if (!empty($this->keyword)) { $query->orFilterWhere(['like', 'education_name', $this->keyword])->orFilterWhere(['like', 'phone_number', $this->keyword])->orFilterWhere(['like', 'social_facebook', $this->keyword])->orFilterWhere(['like', 'social_twitter', $this->keyword])->orFilterWhere(['like', 'latest_company', $this->keyword])->orFilterWhere(['like', 'latest_position', $this->keyword])->orFilterWhere(['like', 'education_study', $this->keyword]); //get user's _ids by keyword from user document $this->_ids = array_keys(ArrayHelper::map(User::find()->orFilterWhere(['like', 'email', $this->keyword])->orFilterWhere(['like', 'fullname', $this->keyword])->orFilterWhere(['like', 'displayname', $this->keyword])->orFilterWhere(['like', 'first_name', $this->keyword])->orFilterWhere(['like', 'last_name', $this->keyword])->orFilterWhere(['like', 'phone', $this->keyword])->asArray()->all(), '_id', '_id')); } if ($this->search_mode == 'AND') { if (!empty($this->_ids)) { $query->where(['in', '_id', $this->_ids]); } if (!empty($this->nationality)) { $query->andFilterWhere(['=', 'nationality', $this->nationality]); } if (!empty($this->location)) { $query->andFilterWhere(['=', 'location', $this->location]); } if (!empty($this->functions)) { $query->andFilterWhere(['in', 'functions', $this->functions]); } if (!empty($this->industries)) { $query->andFilterWhere(['industries' => [$this->industries]]); } } else { if (!empty($this->_ids)) { $query->orFilterWhere(['in', '_id', $this->_ids]); } if (!empty($this->nationality)) { $query->orFilterWhere(['=', 'nationality', $this->nationality]); } if (!empty($this->location)) { $query->orFilterWhere(['=', 'location', $this->location]); } if (!empty($this->functions)) { $query->orFilterWhere(['in', 'functions', $this->functions]); } if (!empty($this->industries)) { $query->orFilterWhere(['industries' => [$this->industries]]); } } if (\app\helpers\ArrayHelper::getValue($params, 'sort') == NULL) { $query->orderBy('candidate_id DESC'); } return $dataProvider; }
public function actionPublicProfile() { $displayName = Yii::$app->request->getQueryParam('display_name'); $user = User::find()->where(['display_name' => $displayName])->one(); if ($displayName and $user) { // Log view for user if (UserJob::checkRole('recruiter') or UserJob::checkRole('employer')) { $log = UserJobProfileViewLog::find()->where(['user_id' => $user->_id, 'view_by_user_id' => Yii::$app->user->id])->one(); if (!$log) { $log = new UserJobProfileViewLog(); $log->user_id = $user->_id; $log->view_by_user_id = Yii::$app->user->id; $log->hits = 1; $log->last_view_date = new \MongoDate(); } else { $log->hits = $log->hits + 1; $log->last_view_date = new \MongoDate(); } $log->save(); } Yii::$app->view->title = Yii::t($this->module->id, ucfirst($displayName) . "'s Profile"); Yii::$app->view->params['breadcrumbs'][] = Yii::$app->view->title; return $this->render("public_profile_{$user->userJob->role}", ['user' => $user]); } else { return $this->goHome(); } }