From a2cb610bdeb4a25bd6b72846ef1af60ce94e8b7a Mon Sep 17 00:00:00 2001 From: yarik Date: Wed, 29 Jun 2016 17:04:45 +0300 Subject: [PATCH] Commit --- frontend/controllers/AccountsController.php | 5 +++-- frontend/controllers/SearchController.php | 7 +++++++ frontend/models/SearchPerformerForm.php | 16 +++++++++++++--- frontend/views/accounts/general.php | 7 ++++++- frontend/views/accounts/service.php | 2 +- frontend/views/search/performer.php | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 6 files changed, 118 insertions(+), 16 deletions(-) diff --git a/frontend/controllers/AccountsController.php b/frontend/controllers/AccountsController.php index a264c24..e3e325b 100755 --- a/frontend/controllers/AccountsController.php +++ b/frontend/controllers/AccountsController.php @@ -516,7 +516,6 @@ $user = \Yii::$app->user->identity; $user_info = $user->userInfo; $company_info = $user->companyInfo; - $user = \Yii::$app->user->identity; if(empty( $user_info )) { //$user_info = new UserInfo([ 'user_id' => $user->id ]); } @@ -1068,12 +1067,14 @@ /** * @var User $user */ - $user = \Yii::$app->user->identity; + $user = User::find()->where(['id' => \Yii::$app->user->id])->one(); + $user->setSpecializationInput($user->getSpecializationInput()); $user_info = $user->userInfo; if(empty( $user_info )) { $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]); } $specializations = Specialization::find() + ->with('children') ->where([ 'specialization_pid' => 0 ]) ->orderBy('specialization_id') ->all(); diff --git a/frontend/controllers/SearchController.php b/frontend/controllers/SearchController.php index 42c08b5..b9b1773 100755 --- a/frontend/controllers/SearchController.php +++ b/frontend/controllers/SearchController.php @@ -109,11 +109,18 @@ use frontend\models\Option; { $specialization = Specialization::specializationsList(); + $specializations = Specialization::find() + ->with('children') + ->where([ 'specialization_pid' => 0 ]) + ->orderBy('specialization_id') + ->all(); + $searchModel = new SearchPerformerForm(); return $this->render('performer',[ 'dataProvider' => $searchModel->search(Yii::$app->request->queryParams), 'specialization' => $specialization, + 'specializations' => $specializations, 'model'=> $searchModel ]); } diff --git a/frontend/models/SearchPerformerForm.php b/frontend/models/SearchPerformerForm.php index 2418c8e..5077873 100755 --- a/frontend/models/SearchPerformerForm.php +++ b/frontend/models/SearchPerformerForm.php @@ -31,6 +31,8 @@ public $search; + public $portfolio; + /** * @inheritdoc */ @@ -47,6 +49,7 @@ 'rating', 'online', 'search', + 'portfolio', ], 'safe', ], @@ -55,7 +58,11 @@ 'default', 'value' => 0, ], - + [ + [ 'portfolio' ], + 'default', + 'value' => 1, + ], ]; } @@ -85,7 +92,6 @@ */ public function search($params) { - $this->load($params); $query = User::find() @@ -100,6 +106,7 @@ 'specializations', 'companyInfo', ]) + ->innerJoin('portfolio', '"portfolio"."user_id" = "user"."id"') ->where([ 'user_info.is_freelancer' => 1 ]); $dataProvider = new ActiveDataProvider([ @@ -162,11 +169,14 @@ ->innerJoin([ 'spec' => 'user_specialization' ], 'spec.user_id = users.id') ->asArray() ->column(); - if(empty($query2)) { + if(empty( $query2 )) { $query->where('0=1'); return $dataProvider; } + // Clear array from empty strings + $this->specialization = array_filter($this->specialization, 'strlen'); + $query->andFilterWhere([ 'user_info.city' => $this->city, 'specialization.specialization_id' => $this->specialization, diff --git a/frontend/views/accounts/general.php b/frontend/views/accounts/general.php index 0540dbc..acccf40 100755 --- a/frontend/views/accounts/general.php +++ b/frontend/views/accounts/general.php @@ -46,13 +46,18 @@
- Обязательно должны быть указаны специализации услуг, что бы вы попали в рейтинг исполнителей + Обязательно должны быть указаны специализации услуг, а также добавлены проекты в портфолио, что бы вы попали в рейтинг исполнителей specializations )) { echo "

В Вашем профиле указаны специализации: " . count($user->specializations) . "

"; } else { echo "

В Вашем профиле не указаны специализации. Чтобы указать - перейдите по " . Html::a('ссылке', [ 'accounts/service' ], [ 'target' => '_blank' ]) . "

"; } + if(!empty( $user->portfolios )) { + echo "

В Вашем портфолио добавлено проектов: " . count($user->portfolios) . "

"; + } else { + echo "

В Вашем портфолио не добавлены проекты. Чтобы добавить - перейдите по " . Html::a('ссылке', [ 'accounts/portfolio' ], [ 'target' => '_blank' ]) . "

"; + } ?>
diff --git a/frontend/views/accounts/service.php b/frontend/views/accounts/service.php index aa51405..2cde530 100755 --- a/frontend/views/accounts/service.php +++ b/frontend/views/accounts/service.php @@ -51,7 +51,7 @@ ?> - +
diff --git a/frontend/views/search/performer.php b/frontend/views/search/performer.php index 6e283b0..0278e54 100755 --- a/frontend/views/search/performer.php +++ b/frontend/views/search/performer.php @@ -4,10 +4,9 @@ * @var SearchPerformerForm $model */ - use common\models\Vacancy; + use common\models\Specialization; use frontend\models\SearchPerformerForm; use kartik\select2\Select2; - use yii\helpers\ArrayHelper; use \yii\helpers\Html; use yii\helpers\Url; use yii\jui\SliderInput; @@ -21,7 +20,6 @@ $active_key = array_keys($sort_array)[ 0 ]; $active_value = $sort_array[ $active_key ]; $sort_name = ( ( $active_value == 4 ) ? '-' : '' ) . $active_key; - $this->title = 'My Yii Application'; ?> @@ -54,10 +52,93 @@ ], ]); ?> + +
+
+ +
+
+ +
+
Необходимо выбрать хотя бы одну «специализацию».
+
+
+ +
+
    +
    + + + + - field($model, 'specialization') + field($model, 'specialization[]') ->dropDownList($specialization, [ 'prompt' => 'Любая' ]); ?> + + field($model, 'portfolio', [ + 'options' => [ + 'class' => 'blocks-check-list-wrapp', + ], + 'template' => "
    {label}
    \n{input}\n{hint}\n{error}", + ]) + ->label('Искать в') + ->radioList([ + 1 => 'Портфолио', + 0 => 'Услуги', + ], [ + 'item' => function($index, $label, $name, $checked, $value) use ($model) { + return "
    "; + }, + 'unselect' => NULL, + ]); ?> field($model, 'type') ->dropDownList([ @@ -128,8 +209,6 @@ 'unselect' => NULL, ]); ?> - - field($model, 'additional_parameters') ->checkboxList([ 'with_portfolio' => 'Только с портфолио', @@ -176,9 +255,9 @@ ?> user->id) || empty(\Yii::$app->user->identity->specializations)) { - echo Html::a('Добавить себя в каталог', Url::toRoute('accounts/service'), [ 'class' => 'add-to-catalog-search-worker' ]); - } + if(empty( \Yii::$app->user->id ) || empty( \Yii::$app->user->identity->specializations )) { + echo Html::a('Добавить себя в каталог', Url::toRoute('accounts/service'), [ 'class' => 'add-to-catalog-search-worker' ]); + } ?>
    -- libgit2 0.21.4