示例#1
0
 /**
  * Updates an existing UserJob model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $_id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $modelUser = User::findOne($id);
     $modelUserJob = UserJob::findOne($id);
     if (!isset($modelUser, $modelUserJob)) {
         throw new NotFoundHttpException("The user was not found.");
     }
     if ($modelUser->load(Yii::$app->request->post()) && $modelUserJob->load(Yii::$app->request->post())) {
         $modelUserValidate = $modelUser->validate();
         $modelUserJobValidate = $modelUserJob->validate();
         if ($modelUserValidate && $modelUserJobValidate) {
             $modelUserJob->email = $modelUser->email;
             if ($modelUser->save(false) && $modelUserJob->save(false)) {
                 if ($modelUserJob->role == 'seeker') {
                     UserJobSeekerResume::updateAll(['nationality' => $modelUserJob->seeker_nationality, 'salary' => $modelUserJob->seeker_salary], ['_id' => $modelUserJob->_id]);
                 }
                 if (Yii::$app->request->post('save_type') !== 'apply') {
                     return $this->redirect(['view', 'id' => (string) $modelUser->_id]);
                 }
             }
         }
     }
     Yii::$app->view->title = Yii::t('yii', 'Update');
     Yii::$app->view->params['breadcrumbs'][] = ['label' => Yii::t($this->module->id, 'Manage Members'), 'url' => ['index']];
     Yii::$app->view->params['breadcrumbs'][] = Yii::$app->view->title;
     return $this->render('form', ['modelUser' => $modelUser, 'modelUserJob' => $modelUserJob]);
 }
示例#2
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;
 }
示例#3
0
 public function actionResume()
 {
     // Xu ly avatar
     $modelUser = User::findOne(Yii::$app->user->id);
     if ($modelUser == null) {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
     $modelUserJob = UserJob::findOne(Yii::$app->user->id);
     if ($modelUserJob == null) {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
     $model = UserJobSeekerResume::findOne(Yii::$app->user->id);
     if ($model == null) {
         $model = new UserJobSeekerResume();
         $model->_id = Yii::$app->user->id;
         $model->nationality = $modelUserJob->seeker_nationality;
         $model->salary = $modelUserJob->seeker_salary;
         $model->candidate_id = UserJob::getNextSequence('seeker');
     }
     $employments = UserJobSeekerEmployment::find()->where(['seeker_id' => Yii::$app->user->id])->indexBy('_id')->all();
     if ($employments == null) {
         $employments = new UserJobSeekerEmployment();
         $employments->seeker_id = $model->_id;
     }
     if ($model->load(Yii::$app->request->post()) && $modelUser->load(Yii::$app->request->post())) {
         // Sync data
         $model->phone_number = $modelUser->phone;
         // UserJobSeekerResume::search() có dùng đến phone_number nên cần đồng bộ chỗ này
         $modelValidate = $model->validate();
         $modelUserValidate = $modelUser->validate();
         if (!is_array($employments)) {
             $employments->load(Yii::$app->request->post());
             $employmentsValidate = $employments->validate();
         } else {
             $employmentsValidate = Model::loadMultiple($employments, Yii::$app->request->post()) && Model::validateMultiple($employments);
         }
         if ($employmentsValidate && $modelValidate && $modelUserValidate && $model->save(false) && $modelUser->save(false)) {
             $modelUserJob->seeker_nationality = $model->nationality;
             $modelUserJob->seeker_salary = $model->salary;
             $modelUserJob->save();
             if (!is_array($employments)) {
                 $employments->save();
                 //update latest company and position for seeker resume document
                 $model->latest_company = $employments->company_name;
                 $model->latest_position = $employments->position;
                 $model->save(false);
             } else {
                 if (isset($employmentsValidate) && $employmentsValidate == true) {
                     $i = 1;
                     $max = sizeof($employments);
                     foreach ($employments as $employment) {
                         $employment->save(false);
                         if ($i == $max) {
                             // is latest employment iformation
                             //update latest company and position for seeker resume document
                             $model->latest_company = $employment->company_name;
                             $model->latest_position = $employment->position;
                             $model->save(false);
                         }
                         $i++;
                     }
                 }
             }
             Yii::$app->getSession()->setFlash('flash', ['type' => 'success', 'title' => Yii::t('common', 'Message'), 'message' => Yii::t('common', 'Your information has been saved successfully.'), 'duration' => 10000]);
             return $this->refresh();
         }
     }
     Yii::$app->view->title = Yii::t($this->module->id, 'Resume');
     Yii::$app->view->params['breadcrumbs'][] = Yii::$app->view->title;
     return $this->render('resume', ['model' => $model, 'modelUser' => $modelUser, 'employments' => $employments]);
 }
示例#4
0
 public function actionEditProfile()
 {
     $jobModel = UserJob::findOne(['_id' => Yii::$app->user->identity->_id]);
     $jobModel->scenario = "edit_recruiter";
     $model = User::findOne(['_id' => Yii::$app->user->identity->_id]);
     $model->scenario = "edit_recruiter";
     if ($model->load(Yii::$app->request->post()) && $jobModel->load(Yii::$app->request->post())) {
         $modelValidate = $model->validate();
         $jobModelValidate = $jobModel->validate();
         if ($modelValidate && $jobModelValidate) {
             if ($model->save(false)) {
                 if ($jobModel->save(false)) {
                     Yii::$app->getSession()->setFlash('flash', ['type' => 'success', 'title' => Yii::t('account', 'Message'), 'message' => Yii::t('account', 'Updated succesfully.'), 'duration' => 10000]);
                     return $this->redirect(['view-profile']);
                 }
             }
         }
     }
     Yii::$app->view->title = Yii::t($this->module->id, 'Edit Profile');
     Yii::$app->view->params['breadcrumbs'][] = Yii::$app->view->title;
     return $this->render('edit-profile', ['model' => $model, 'jobModel' => $jobModel]);
 }
示例#5
0
 public function getUser()
 {
     return $this->hasOne(User::className(), ['_id' => '_id']);
 }
示例#6
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();
     }
 }