예제 #1
0
 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;
 }
예제 #2
0
 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();
     }
 }