Commit a2cb610bdeb4a25bd6b72846ef1af60ce94e8b7a

Authored by Yarik
1 parent fe96bcdd

Commit

frontend/controllers/AccountsController.php
... ... @@ -516,7 +516,6 @@
516 516 $user = \Yii::$app->user->identity;
517 517 $user_info = $user->userInfo;
518 518 $company_info = $user->companyInfo;
519   - $user = \Yii::$app->user->identity;
520 519 if(empty( $user_info )) {
521 520 //$user_info = new UserInfo([ 'user_id' => $user->id ]);
522 521 }
... ... @@ -1068,12 +1067,14 @@
1068 1067 /**
1069 1068 * @var User $user
1070 1069 */
1071   - $user = \Yii::$app->user->identity;
  1070 + $user = User::find()->where(['id' => \Yii::$app->user->id])->one();
  1071 + $user->setSpecializationInput($user->getSpecializationInput());
1072 1072 $user_info = $user->userInfo;
1073 1073 if(empty( $user_info )) {
1074 1074 $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
1075 1075 }
1076 1076 $specializations = Specialization::find()
  1077 + ->with('children')
1077 1078 ->where([ 'specialization_pid' => 0 ])
1078 1079 ->orderBy('specialization_id')
1079 1080 ->all();
... ...
frontend/controllers/SearchController.php
... ... @@ -109,11 +109,18 @@ use frontend\models\Option;
109 109 {
110 110 $specialization = Specialization::specializationsList();
111 111  
  112 + $specializations = Specialization::find()
  113 + ->with('children')
  114 + ->where([ 'specialization_pid' => 0 ])
  115 + ->orderBy('specialization_id')
  116 + ->all();
  117 +
112 118 $searchModel = new SearchPerformerForm();
113 119  
114 120 return $this->render('performer',[
115 121 'dataProvider' => $searchModel->search(Yii::$app->request->queryParams),
116 122 'specialization' => $specialization,
  123 + 'specializations' => $specializations,
117 124 'model'=> $searchModel
118 125 ]);
119 126 }
... ...
frontend/models/SearchPerformerForm.php
... ... @@ -31,6 +31,8 @@
31 31  
32 32 public $search;
33 33  
  34 + public $portfolio;
  35 +
34 36 /**
35 37 * @inheritdoc
36 38 */
... ... @@ -47,6 +49,7 @@
47 49 'rating',
48 50 'online',
49 51 'search',
  52 + 'portfolio',
50 53 ],
51 54 'safe',
52 55 ],
... ... @@ -55,7 +58,11 @@
55 58 'default',
56 59 'value' => 0,
57 60 ],
58   -
  61 + [
  62 + [ 'portfolio' ],
  63 + 'default',
  64 + 'value' => 1,
  65 + ],
59 66 ];
60 67 }
61 68  
... ... @@ -85,7 +92,6 @@
85 92 */
86 93 public function search($params)
87 94 {
88   -
89 95 $this->load($params);
90 96  
91 97 $query = User::find()
... ... @@ -100,6 +106,7 @@
100 106 'specializations',
101 107 'companyInfo',
102 108 ])
  109 + ->innerJoin('portfolio', '"portfolio"."user_id" = "user"."id"')
103 110 ->where([ 'user_info.is_freelancer' => 1 ]);
104 111  
105 112 $dataProvider = new ActiveDataProvider([
... ... @@ -162,11 +169,14 @@
162 169 ->innerJoin([ 'spec' => 'user_specialization' ], 'spec.user_id = users.id')
163 170 ->asArray()
164 171 ->column();
165   - if(empty($query2)) {
  172 + if(empty( $query2 )) {
166 173 $query->where('0=1');
167 174 return $dataProvider;
168 175 }
169 176  
  177 + // Clear array from empty strings
  178 + $this->specialization = array_filter($this->specialization, 'strlen');
  179 +
170 180 $query->andFilterWhere([
171 181 'user_info.city' => $this->city,
172 182 'specialization.specialization_id' => $this->specialization,
... ...
frontend/views/accounts/general.php
... ... @@ -46,13 +46,18 @@
46 46 </div>
47 47 <div class="general-check-right">
48 48 <div class="general-check-right-txt">
49   - Обязательно должны быть указаны специализации услуг, что бы вы попали в рейтинг исполнителей
  49 + Обязательно должны быть указаны специализации услуг, а также добавлены проекты в портфолио, что бы вы попали в рейтинг исполнителей
50 50 <?php
51 51 if(!empty( $user->specializations )) {
52 52 echo "<p>В Вашем профиле указаны специализации: " . count($user->specializations) . "</p>";
53 53 } else {
54 54 echo "<p>В Вашем профиле не указаны специализации. Чтобы указать - перейдите по " . Html::a('ссылке', [ 'accounts/service' ], [ 'target' => '_blank' ]) . "</p>";
55 55 }
  56 + if(!empty( $user->portfolios )) {
  57 + echo "<p>В Вашем портфолио добавлено проектов: " . count($user->portfolios) . "</p>";
  58 + } else {
  59 + echo "<p>В Вашем портфолио не добавлены проекты. Чтобы добавить - перейдите по " . Html::a('ссылке', [ 'accounts/portfolio' ], [ 'target' => '_blank' ]) . "</p>";
  60 + }
56 61 ?>
57 62 </div>
58 63 </div>
... ...
frontend/views/accounts/service.php
... ... @@ -51,7 +51,7 @@
51 51 ?>
52 52 </div>
53 53 </div>
54   -
  54 +
55 55 <div class="input-blocks-wrapper admin-menu-list">
56 56 <div class="input-blocks" style="width: 100%; margin-bottom: 5px">
57 57 <label>Специализации</label>
... ...
frontend/views/search/performer.php
... ... @@ -4,10 +4,9 @@
4 4 * @var SearchPerformerForm $model
5 5 */
6 6  
7   - use common\models\Vacancy;
  7 + use common\models\Specialization;
8 8 use frontend\models\SearchPerformerForm;
9 9 use kartik\select2\Select2;
10   - use yii\helpers\ArrayHelper;
11 10 use \yii\helpers\Html;
12 11 use yii\helpers\Url;
13 12 use yii\jui\SliderInput;
... ... @@ -21,7 +20,6 @@
21 20 $active_key = array_keys($sort_array)[ 0 ];
22 21 $active_value = $sort_array[ $active_key ];
23 22 $sort_name = ( ( $active_value == 4 ) ? '-' : '' ) . $active_key;
24   -
25 23 $this->title = 'My Yii Application';
26 24 ?>
27 25  
... ... @@ -54,10 +52,93 @@
54 52 ],
55 53 ]); ?>
56 54  
  55 + <?php
  56 + // New specialization chooser
  57 + ?>
  58 + <div class="input-blocks-wrapper admin-menu-list">
  59 + <div class="input-blocks" style="width: 100%; margin-bottom: 5px">
  60 + <label>Специализации</label>
  61 + <div class="required"></div>
  62 + </div>
  63 + <div class="style">
  64 + <ul class="content-menu-first">
  65 + <?php foreach($specializations as $specialization): ?>
  66 + <li data-img="<?= $specialization->image ?>">
  67 + <span data-menu-bg="<?= $specialization->background ?>" style="background: <?= $specialization->background ?>"></span><a href="#"><?= $specialization->specialization_name ?></a>
  68 + <ul>
  69 + <?php foreach($specialization->children as $child_first): ?>
  70 +
  71 + <?php if($child_first instanceof Specialization): ?>
  72 + <li>
  73 + <a href="#"><?= $child_first->specialization_name ?></a>
  74 + <ul>
  75 + <?php foreach($child_first->children as $child_second): ?>
  76 + <?php if($child_first instanceof Specialization): ?>
  77 + <li>
  78 + <a href="#" title="<?= $child_second->specialization_name ?>">
  79 + <?= $form->field($model, "specialization[{$child_second->specialization_id}]", [
  80 + 'template' => '{input}{label}{hint}{error}',
  81 + ])
  82 + ->label('<span></span>' . $child_second->specialization_name)
  83 + ->checkbox([
  84 + 'value' => $child_second->specialization_id,
  85 + 'label' => NULL,
  86 + 'uncheck' => NULL,
  87 + 'class' => 'custom-check',
  88 + ], false) ?>
  89 + </a>
  90 + </li>
  91 + <?php endif; ?>
  92 + <?php endforeach; ?>
  93 + </ul>
  94 + </li>
  95 + <?php endif; ?>
  96 + <?php endforeach; ?>
  97 +
  98 + </ul>
  99 + </li>
  100 + <?php endforeach; ?>
  101 + </ul>
  102 + </div>
  103 + <div class="style admn-menu-err">
  104 + <div class="help-block">Необходимо выбрать хотя бы одну «специализацию».</div>
  105 + </div>
  106 + </div>
  107 +
  108 + <div class="admin-specialization-selected style">
  109 + <ul></ul>
  110 + </div>
  111 +
  112 + <?php
  113 + // End of new specialization chooser
  114 + ?>
  115 +
  116 + <?php
  117 + /*
  118 + ?>
57 119  
58   - <?= $form->field($model, 'specialization')
  120 + <?= $form->field($model, 'specialization[]')
59 121 ->dropDownList($specialization, [ 'prompt' => 'Любая' ]); ?>
  122 + <?php
  123 + */
  124 + ?>
60 125  
  126 + <?= $form->field($model, 'portfolio', [
  127 + 'options' => [
  128 + 'class' => 'blocks-check-list-wrapp',
  129 + ],
  130 + 'template' => "<div class='blocks-check-title'>{label}</div>\n{input}\n{hint}\n{error}",
  131 + ])
  132 + ->label('Искать в')
  133 + ->radioList([
  134 + 1 => 'Портфолио',
  135 + 0 => 'Услуги',
  136 + ], [
  137 + 'item' => function($index, $label, $name, $checked, $value) use ($model) {
  138 + return "<div class='blocks-check-list'><input type='radio' id='{$model->formName()}-{$index}-portfolio' name='{$name}' class='check-search' value='{$value}' " . ( $checked ? 'checked' : '' ) . "><label for='{$model->formName()}-{$index}-portfolio'><span></span>{$label}</label></div>";
  139 + },
  140 + 'unselect' => NULL,
  141 + ]); ?>
61 142  
62 143 <?= $form->field($model, 'type')
63 144 ->dropDownList([
... ... @@ -128,8 +209,6 @@
128 209 'unselect' => NULL,
129 210 ]); ?>
130 211  
131   -
132   -
133 212 <?= $form->field($model, 'additional_parameters')
134 213 ->checkboxList([
135 214 'with_portfolio' => 'Только с портфолио',
... ... @@ -176,9 +255,9 @@
176 255 ?>
177 256  
178 257 <?php
179   - if(empty(\Yii::$app->user->id) || empty(\Yii::$app->user->identity->specializations)) {
180   - echo Html::a('Добавить себя в каталог', Url::toRoute('accounts/service'), [ 'class' => 'add-to-catalog-search-worker' ]);
181   - }
  258 + if(empty( \Yii::$app->user->id ) || empty( \Yii::$app->user->identity->specializations )) {
  259 + echo Html::a('Добавить себя в каталог', Url::toRoute('accounts/service'), [ 'class' => 'add-to-catalog-search-worker' ]);
  260 + }
182 261 ?>
183 262  
184 263 <div class="search-worker-sort-wr style">
... ...