Commit a22972f9b0479f4bc1fa84b7a21dd6dd70fa5c84

Authored by Eugeny Galkovskiy
2 parents 0c1ba997 1a3b0a63

Merge remote-tracking branch 'origin/master'

common/models/Project.php
@@ -6,8 +6,11 @@ @@ -6,8 +6,11 @@
6 use common\modules\comment\models\CommentProject; 6 use common\modules\comment\models\CommentProject;
7 use common\modules\fileloader\behaviors\FileloaderBehavior; 7 use common\modules\fileloader\behaviors\FileloaderBehavior;
8 use Yii; 8 use Yii;
  9 + use yii\base\ModelEvent;
  10 + use yii\behaviors\AttributeBehavior;
9 use yii\behaviors\BlameableBehavior; 11 use yii\behaviors\BlameableBehavior;
10 use yii\behaviors\TimestampBehavior; 12 use yii\behaviors\TimestampBehavior;
  13 + use yii\db\ActiveRecord;
11 use yii\db\Expression; 14 use yii\db\Expression;
12 15
13 /** 16 /**
@@ -68,6 +71,33 @@ @@ -68,6 +71,33 @@
68 'updatedAtAttribute' => false, 71 'updatedAtAttribute' => false,
69 'value' => new Expression('NOW()'), 72 'value' => new Expression('NOW()'),
70 ], 73 ],
  74 + [
  75 + 'class' => AttributeBehavior::className(),
  76 + 'attributes' => [
  77 + ActiveRecord::EVENT_BEFORE_INSERT => 'total_budget',
  78 + ActiveRecord::EVENT_BEFORE_UPDATE => 'total_budget',
  79 + ],
  80 + 'value' => function($event) {
  81 + /**
  82 + * @var ModelEvent $event
  83 + * @var Project $sender
  84 + */
  85 + $total_budget = 0;
  86 + $sender = $event->sender;
  87 + if($sender->budget > 0) {
  88 + $currencies = Currency::find()
  89 + ->select([
  90 + 'rate',
  91 + 'currency_id',
  92 + ])
  93 + ->asArray()
  94 + ->indexBy('currency_id')
  95 + ->column();
  96 + $total_budget = $sender->budget * $currencies[$sender->budget_currency];
  97 + }
  98 + return $total_budget;
  99 + },
  100 + ],
71 'slug' => [ 101 'slug' => [
72 'class' => 'common\behaviors\Slug', 102 'class' => 'common\behaviors\Slug',
73 'in_attribute' => 'name', 103 'in_attribute' => 'name',
@@ -129,7 +159,6 @@ @@ -129,7 +159,6 @@
129 [ 159 [
130 'name', 160 'name',
131 'link', 161 'link',
132 - 'budget',  
133 'city', 162 'city',
134 'street', 163 'street',
135 'house', 164 'house',
@@ -138,6 +167,14 @@ @@ -138,6 +167,14 @@
138 'max' => 255, 167 'max' => 255,
139 ], 168 ],
140 [ 169 [
  170 + [
  171 + 'budget',
  172 + ],
  173 + 'number',
  174 + 'skipOnEmpty' => true,
  175 + 'min' => 0,
  176 + ],
  177 + [
141 [ 'view_count' ], 178 [ 'view_count' ],
142 'default', 179 'default',
143 'value' => 0, 180 'value' => 0,
common/models/Specialization.php
1 <?php 1 <?php
2 2
3 -namespace common\models;  
4 -  
5 -use Yii;  
6 -use yii\helpers\ArrayHelper;  
7 -  
8 -/**  
9 - * This is the model class for table "specialization".  
10 - *  
11 - * @property integer $specialization_id  
12 - * @property integer $specialization_pid  
13 - * @property string $specialization_name  
14 - * @property string $image  
15 - * @property string $background  
16 - */  
17 -class Specialization extends \yii\db\ActiveRecord  
18 -{  
19 - /**  
20 - * @inheritdoc  
21 - */  
22 - public static function tableName()  
23 - {  
24 - return 'specialization';  
25 - } 3 + namespace common\models;
26 4
27 - /**  
28 - * @inheritdoc  
29 - */  
30 - public function rules()  
31 - {  
32 - return [  
33 - [['specialization_pid','status'], 'integer'],  
34 - [['specialization_pid'], 'default', 'value' => '0',],  
35 - [['specialization_name'], 'required'],  
36 - [['specialization_name','image','background'], 'string', 'max' => 255],  
37 - ];  
38 - } 5 + use Yii;
  6 + use yii\db\ActiveQuery;
  7 + use yii\helpers\ArrayHelper;
39 8
40 /** 9 /**
41 - * @inheritdoc 10 + * This is the model class for table "specialization".
  11 + * @property integer $specialization_id
  12 + * @property integer $specialization_pid
  13 + * @property string $specialization_name
  14 + * @property string $image
  15 + * @property string $background
42 */ 16 */
43 - public function attributeLabels() 17 + class Specialization extends \yii\db\ActiveRecord
44 { 18 {
45 - return [  
46 - 'specialization_id' => Yii::t('app', 'specialization_id'),  
47 - 'specialization_pid' => Yii::t('app', 'specialization_pid'),  
48 - 'specialization_name' => Yii::t('app', 'specialization_name'),  
49 - 'specialization_parent_name' => Yii::t('app', 'specialization_parent_name'),  
50 - 'image' => Yii::t('app', 'image'),  
51 - 'background' => Yii::t('app', 'background'),  
52 - 'status' => Yii::t('app', 'status'),  
53 - ];  
54 - }  
55 19
56 - public static function specializationsList(){  
57 -  
58 -  
59 - $specializationArray = []; 20 + /**
  21 + * @inheritdoc
  22 + */
  23 + public static function tableName()
  24 + {
  25 + return 'specialization';
  26 + }
60 27
61 - $specialization = Specialization::find()->where(['specialization_id'=> Specialization::find()->select('specialization_id')  
62 - ->andWhere('specialization_pid != 0')  
63 - ->column()])  
64 - ->all(); 28 + /**
  29 + * @inheritdoc
  30 + */
  31 + public function rules()
  32 + {
  33 + return [
  34 + [
  35 + [
  36 + 'specialization_pid',
  37 + 'status',
  38 + ],
  39 + 'integer',
  40 + ],
  41 + [
  42 + [ 'specialization_pid' ],
  43 + 'default',
  44 + 'value' => '0',
  45 + ],
  46 + [
  47 + [ 'specialization_name' ],
  48 + 'required',
  49 + ],
  50 + [
  51 + [
  52 + 'specialization_name',
  53 + 'image',
  54 + 'background',
  55 + ],
  56 + 'string',
  57 + 'max' => 255,
  58 + ],
  59 + ];
  60 + }
65 61
66 - foreach(ArrayHelper::index($specialization,'specialization_id') as $spec){  
67 - $array = $spec->hasChildrenInArray($specialization);  
68 - if($array){  
69 - $specializationArray[$spec->specialization_name] = $array;  
70 - } 62 + /**
  63 + * @inheritdoc
  64 + */
  65 + public function attributeLabels()
  66 + {
  67 + return [
  68 + 'specialization_id' => Yii::t('app', 'specialization_id'),
  69 + 'specialization_pid' => Yii::t('app', 'specialization_pid'),
  70 + 'specialization_name' => Yii::t('app', 'specialization_name'),
  71 + 'specialization_parent_name' => Yii::t('app', 'specialization_parent_name'),
  72 + 'image' => Yii::t('app', 'image'),
  73 + 'background' => Yii::t('app', 'background'),
  74 + 'status' => Yii::t('app', 'status'),
  75 + ];
71 } 76 }
72 77
73 - return $specializationArray; 78 + public static function specializationsList()
  79 + {
74 80
  81 + $specializationArray = [ ];
75 82
76 - } 83 + $specialization = Specialization::find()
  84 + ->where([
  85 + 'specialization_id' => Specialization::find()
  86 + ->select('specialization_id')
  87 + ->andWhere('specialization_pid != 0')
  88 + ->column(),
  89 + ])
  90 + ->all();
77 91
  92 + foreach(ArrayHelper::index($specialization, 'specialization_id') as $spec) {
  93 + $array = $spec->hasChildrenInArray($specialization);
  94 + if($array) {
  95 + $specializationArray[ $spec->specialization_name ] = $array;
  96 + }
  97 + }
78 98
79 - public function getParent()  
80 - {  
81 - return $this->hasOne(self::className(), ['specialization_id' => 'specialization_pid']);  
82 - } 99 + return $specializationArray;
83 100
84 - public function getChildren()  
85 - {  
86 - return $this->hasMany(self::className(), ['specialization_pid' => 'specialization_id']);  
87 - } 101 + }
88 102
89 - public function hasChildrenInArray($array){  
90 - $array = ArrayHelper::map($array,'specialization_id', 'specialization_name','specialization_pid'); 103 + public function getParent()
  104 + {
  105 + return $this->hasOne(self::className(), [ 'specialization_id' => 'specialization_pid' ]);
  106 + }
91 107
92 - if(isset($array[$this->specialization_id])){  
93 - return $array[$this->specialization_id];  
94 - } else {  
95 - return false; 108 + public function getChildren()
  109 + {
  110 + return $this->hasMany(self::className(), [ 'specialization_pid' => 'specialization_id' ]);
96 } 111 }
97 112
98 - } 113 + public function hasChildrenInArray($array)
  114 + {
  115 + $array = ArrayHelper::map($array, 'specialization_id', 'specialization_name', 'specialization_pid');
99 116
100 - public function getStack()  
101 - {  
102 - $stack[] = $this->specialization_id;  
103 - if(!empty($this->children)) {  
104 - foreach($this->children as $child) {  
105 - $stack[] = $child->specialization_id;  
106 - if(!empty($child->children)) {  
107 - $stack = array_merge($stack, ArrayHelper::getColumn($child->children, 'specialization_id', false)); 117 + if(isset( $array[ $this->specialization_id ] )) {
  118 + return $array[ $this->specialization_id ];
  119 + } else {
  120 + return false;
  121 + }
  122 +
  123 + }
  124 +
  125 + public function getStack()
  126 + {
  127 + $stack[] = $this->specialization_id;
  128 + if(!empty( $this->children )) {
  129 + foreach($this->children as $child) {
  130 + $stack[] = $child->specialization_id;
  131 + if(!empty( $child->children )) {
  132 + $stack = array_merge($stack, ArrayHelper::getColumn($child->children, 'specialization_id', false));
  133 + }
108 } 134 }
109 } 135 }
  136 + return $stack;
  137 + }
  138 +
  139 + /**
  140 + * @return ActiveQuery
  141 + */
  142 + public static function getSorted()
  143 + {
  144 + return self::find()
  145 + ->with([
  146 + 'children' => function($query) {
  147 + /**
  148 + * @var ActiveQuery $query
  149 + */
  150 + $query->orderBy('specialization_name');
  151 + },
  152 + ])
  153 + ->with([
  154 + 'children.children' => function($query) {
  155 + /**
  156 + * @var ActiveQuery $query
  157 + */
  158 + $query->orderBy('specialization_name');
  159 + },
  160 + ])
  161 + ->where([ 'specialization_pid' => 0 ])
  162 + ->orderBy('specialization_name');
110 } 163 }
111 - return $stack;  
112 - }  
113 164
114 -} 165 + }
common/models/TenderSearch.php
@@ -90,13 +90,13 @@ @@ -90,13 +90,13 @@
90 public function attributeLabels() 90 public function attributeLabels()
91 { 91 {
92 return [ 92 return [
93 - 'specialization' => Yii::t('app', 'specialization'), 93 + 'specialization' => Yii::t('app', 'specialization'),
94 'budget_currency' => Yii::t('app', 'budget_currency'), 94 'budget_currency' => Yii::t('app', 'budget_currency'),
95 - 'contractual' => Yii::t('app', 'contractual'),  
96 - 'city' => Yii::t('app', 'city'),  
97 - 'payment' => Yii::t('app', 'payment'),  
98 - 'budget_from' => Yii::t('app', 'budget_from'),  
99 - 'budget_to' => Yii::t('app', 'budget_to'), 95 + 'contractual' => Yii::t('app', 'contractual'),
  96 + 'city' => Yii::t('app', 'city'),
  97 + 'payment' => Yii::t('app', 'payment'),
  98 + 'budget_from' => Yii::t('app', 'budget_from'),
  99 + 'budget_to' => Yii::t('app', 'budget_to'),
100 ]; 100 ];
101 } 101 }
102 102
@@ -120,7 +120,8 @@ @@ -120,7 +120,8 @@
120 { 120 {
121 $query = Project::find() 121 $query = Project::find()
122 ->joinWith('projectSpecializations') 122 ->joinWith('projectSpecializations')
123 - ->joinWith('projectPayments'); 123 + ->joinWith('projectPayments')
  124 + ->joinWith('user.companyInfo');
124 125
125 $dataProvider = new ActiveDataProvider([ 126 $dataProvider = new ActiveDataProvider([
126 'query' => $query, 127 'query' => $query,
@@ -200,9 +201,32 @@ @@ -200,9 +201,32 @@
200 'city' => $this->city, 201 'city' => $this->city,
201 ]) 202 ])
202 ->andFilterWhere([ 203 ->andFilterWhere([
203 - 'like',  
204 - 'LOWER(project.name)',  
205 - mb_strtolower($this->info), 204 + 'or',
  205 + [
  206 + 'like',
  207 + 'LOWER(project.name)',
  208 + mb_strtolower($this->info),
  209 + ],
  210 + [
  211 + 'like',
  212 + 'LOWER(project.description)',
  213 + mb_strtolower($this->info),
  214 + ],
  215 + [
  216 + 'like',
  217 + 'LOWER("user".firstname)',
  218 + mb_strtolower($this->info),
  219 + ],
  220 + [
  221 + 'like',
  222 + 'LOWER("user".lastname)',
  223 + mb_strtolower($this->info),
  224 + ],
  225 + [
  226 + 'like',
  227 + 'LOWER(company_info.name)',
  228 + mb_strtolower($this->info),
  229 + ],
206 ]) 230 ])
207 ->andWhere([ 231 ->andWhere([
208 'project_payment.payment_id' => $this->payment, 232 'project_payment.payment_id' => $this->payment,
frontend/controllers/SearchController.php
1 <?php 1 <?php
2 -namespace frontend\controllers;  
3 -  
4 -use common\models\Currency;  
5 -use common\models\CustomerSearch;  
6 -use common\models\Payment;  
7 -use common\models\Specialization;  
8 -use common\models\TenderSearch;  
9 -use frontend\models\SearchPerformerForm;  
10 -use frontend\models\SearchVacancyForm;  
11 -use Yii;  
12 -use frontend\models\Options;  
13 -use frontend\models\OptionValues;  
14 -use yii\base\InvalidParamException;  
15 -use yii\data\ActiveDataProvider;  
16 -use yii\data\Pagination;  
17 -use yii\web\Controller;  
18 -use frontend\models\OptionsToValues;  
19 -use common\models\Page;  
20 -use frontend\models\Option; 2 + namespace frontend\controllers;
  3 +
  4 + use common\models\Currency;
  5 + use common\models\CustomerSearch;
  6 + use common\models\Payment;
  7 + use common\models\Specialization;
  8 + use common\models\TenderSearch;
  9 + use frontend\models\SearchPerformerForm;
  10 + use frontend\models\SearchVacancyForm;
  11 + use Yii;
  12 + use frontend\models\Options;
  13 + use frontend\models\OptionValues;
  14 + use yii\base\InvalidParamException;
  15 + use yii\data\ActiveDataProvider;
  16 + use yii\data\Pagination;
  17 + use yii\db\ActiveQuery;
  18 + use yii\web\Controller;
  19 + use frontend\models\OptionsToValues;
  20 + use common\models\Page;
  21 + use frontend\models\Option;
21 22
22 /** 23 /**
23 * Site controller 24 * Site controller
@@ -49,20 +50,32 @@ use frontend\models\Option; @@ -49,20 +50,32 @@ use frontend\models\Option;
49 $actions = [ 50 $actions = [
50 1 => 'project', 51 1 => 'project',
51 2 => 'performer', 52 2 => 'performer',
52 - 3 => 'customer' 53 + 3 => 'customer',
53 ]; 54 ];
54 if(!array_key_exists($action, $actions)) { 55 if(!array_key_exists($action, $actions)) {
55 - return $this->redirect(['/', 'query' => $query]); 56 + return $this->redirect([
  57 + '/',
  58 + 'query' => $query,
  59 + ]);
56 } else { 60 } else {
57 switch($action) { 61 switch($action) {
58 case 1: 62 case 1:
59 - return $this->redirect(['search/'.$actions[$action], 'TenderSearch[info]' => $query]);  
60 - break; 63 + return $this->redirect([
  64 + 'search/' . $actions[ $action ],
  65 + 'TenderSearch[info]' => $query,
  66 + ]);
  67 + break;
61 case 2: 68 case 2:
62 - return $this->redirect(['search/'.$actions[$action], 'SearchPerformerForm[search]' => $query]); 69 + return $this->redirect([
  70 + 'search/' . $actions[ $action ],
  71 + 'SearchPerformerForm[search]' => $query,
  72 + ]);
63 break; 73 break;
64 case 3: 74 case 3:
65 - return $this->redirect(['search/'.$actions[$action], 'CustomerSearch[info]' => $query]); 75 + return $this->redirect([
  76 + 'search/' . $actions[ $action ],
  77 + 'CustomerSearch[info]' => $query,
  78 + ]);
66 break; 79 break;
67 } 80 }
68 } 81 }
@@ -73,19 +86,26 @@ use frontend\models\Option; @@ -73,19 +86,26 @@ use frontend\models\Option;
73 { 86 {
74 $model = new TenderSearch(); 87 $model = new TenderSearch();
75 $dataProvider = $model->search(Yii::$app->request->queryParams); 88 $dataProvider = $model->search(Yii::$app->request->queryParams);
76 - $dataProvider->query->andWhere(['hidden' => 0]); 89 + $dataProvider->query->andWhere([ 'hidden' => 0 ]);
77 $dataProvider->setPagination([ 90 $dataProvider->setPagination([
78 'pageSize' => 10, 91 'pageSize' => 10,
79 ]); 92 ]);
80 $specialization = Specialization::specializationsList(); 93 $specialization = Specialization::specializationsList();
81 $currencies = Currency::getCurrencyDropdown(); 94 $currencies = Currency::getCurrencyDropdown();
82 - $payments = Payment::find()->select(['name', 'payment_id'])->asArray()->indexBy('payment_id')->column(); 95 + $payments = Payment::find()
  96 + ->select([
  97 + 'name',
  98 + 'payment_id',
  99 + ])
  100 + ->asArray()
  101 + ->indexBy('payment_id')
  102 + ->column();
83 return $this->render('project', [ 103 return $this->render('project', [
84 - 'model' => $model,  
85 - 'dataProvider' => $dataProvider, 104 + 'model' => $model,
  105 + 'dataProvider' => $dataProvider,
86 'specialization' => $specialization, 106 'specialization' => $specialization,
87 - 'currencies' => $currencies,  
88 - 'payments' => $payments, 107 + 'currencies' => $currencies,
  108 + 'payments' => $payments,
89 ]); 109 ]);
90 } 110 }
91 111
@@ -103,25 +123,19 @@ use frontend\models\Option; @@ -103,25 +123,19 @@ use frontend\models\Option;
103 ]); 123 ]);
104 } 124 }
105 125
106 -  
107 -  
108 public function actionPerformer() 126 public function actionPerformer()
109 { 127 {
110 $specialization = Specialization::specializationsList(); 128 $specialization = Specialization::specializationsList();
111 129
112 - $specializations = Specialization::find()  
113 - ->with('children')  
114 - ->where([ 'specialization_pid' => 0 ])  
115 - ->orderBy('specialization_id')  
116 - ->all(); 130 + $specializations = Specialization::getSorted()->all();
117 131
118 $searchModel = new SearchPerformerForm(); 132 $searchModel = new SearchPerformerForm();
119 133
120 - return $this->render('performer',[  
121 - 'dataProvider' => $searchModel->search(Yii::$app->request->queryParams),  
122 - 'specialization' => $specialization, 134 + return $this->render('performer', [
  135 + 'dataProvider' => $searchModel->search(Yii::$app->request->queryParams),
  136 + 'specialization' => $specialization,
123 'specializations' => $specializations, 137 'specializations' => $specializations,
124 - 'model'=> $searchModel 138 + 'model' => $searchModel,
125 ]); 139 ]);
126 } 140 }
127 141
@@ -141,7 +155,7 @@ use frontend\models\Option; @@ -141,7 +155,7 @@ use frontend\models\Option;
141 ]); 155 ]);
142 156
143 $vacancy = $query->offset($pagination->offset) 157 $vacancy = $query->offset($pagination->offset)
144 - ->limit($pagination->limit); 158 + ->limit($pagination->limit);
145 159
146 $dataProvider = new ActiveDataProvider([ 160 $dataProvider = new ActiveDataProvider([
147 'query' => $vacancy, 161 'query' => $vacancy,
@@ -154,11 +168,11 @@ use frontend\models\Option; @@ -154,11 +168,11 @@ use frontend\models\Option;
154 ], 168 ],
155 ]); 169 ]);
156 170
157 - return $this->render('vacancy',[  
158 - 'dataProvider' => $dataProvider, 171 + return $this->render('vacancy', [
  172 + 'dataProvider' => $dataProvider,
159 'specialization' => $specialization, 173 'specialization' => $specialization,
160 - 'model'=> $searchModel,  
161 - 'pagination'=> $pagination 174 + 'model' => $searchModel,
  175 + 'pagination' => $pagination,
162 ]); 176 ]);
163 177
164 } 178 }
frontend/models/SearchPerformerForm.php
@@ -177,9 +177,19 @@ @@ -177,9 +177,19 @@
177 // Clear array from empty strings 177 // Clear array from empty strings
178 //$this->specialization = array_filter($this->specialization, 'strlen'); 178 //$this->specialization = array_filter($this->specialization, 'strlen');
179 179
  180 + if($this->portfolio) {
  181 + $query->innerJoin('portfolio_specialization', '"portfolio"."portfolio_id" = "portfolio_specialization"."portfolio_id"');
  182 + $query->andFilterWhere([
  183 + 'portfolio_specialization.specialization_id' => $this->specialization,
  184 + ]);
  185 + } else {
  186 + $query->andFilterWhere([
  187 + 'specialization.specialization_id' => $this->specialization,
  188 + ]);
  189 + }
  190 +
180 $query->andFilterWhere([ 191 $query->andFilterWhere([
181 'user_info.city' => $this->city, 192 'user_info.city' => $this->city,
182 - 'specialization.specialization_id' => $this->specialization,  
183 'user.type' => $this->type, 193 'user.type' => $this->type,
184 'user.id' => $query2, 194 'user.id' => $query2,
185 ]); 195 ]);
frontend/views/search/_performer_list_view.php
@@ -19,34 +19,29 @@ @@ -19,34 +19,29 @@
19 if(!empty( $portfolios )) { 19 if(!empty( $portfolios )) {
20 for($i = 0; $i < count($portfolios); $i++) { 20 for($i = 0; $i < count($portfolios); $i++) {
21 if($i) { 21 if($i) {
22 - echo Html::a(Html::img($portfolios[ $i ]), '#', [ 'class' => 'small-img-search gallery-box-min' ]); 22 + echo Html::a(Html::img($portfolios[ $i ]), [
  23 + 'performer/portfolio',
  24 + 'performer_id' => $model->id,
  25 + ], [ 'class' => 'small-img-search' ]);
23 } else { 26 } else {
24 - echo Html::a(Html::img($model->minImg($portfolios[ $i ], '318', '228')), '#', [ 'class' => 'big-img-search gallery-box-min' ]); 27 + echo Html::a(Html::img($model->minImg($portfolios[ $i ], '318', '228')), [
  28 + 'performer/portfolio',
  29 + 'performer_id' => $model->id,
  30 + ], [ 'class' => 'big-img-search' ]);
25 } 31 }
26 } 32 }
27 } else { 33 } else {
28 echo 'Работы в порфолио отсутствуют'; 34 echo 'Работы в порфолио отсутствуют';
29 } 35 }
30 ?> 36 ?>
31 -  
32 - <div class="gallery-box-hidden">  
33 - <div class="gallery-box-preview">  
34 - <?php foreach($portfolios as $portfolio): ?>  
35 - <span data-link="<?= $model->minImg($portfolio, '152', '108') ?>"></span>  
36 - <?php endforeach; ?>  
37 - </div>  
38 - <div class="gallery-box-big">  
39 - <?php foreach($portfolios as $portfolio): ?>  
40 - <span data-link="<?= $model->minImg($portfolio, 'original') ?>"></span>  
41 - <?php endforeach; ?>  
42 - </div>  
43 - </div>  
44 </div> 37 </div>
45 </div> 38 </div>
46 -  
47 <div class="search-worker-blocks-text-wr"> 39 <div class="search-worker-blocks-text-wr">
48 <div class="search-worker-blocks-ico-wr"> 40 <div class="search-worker-blocks-ico-wr">
49 - <?= Html::img($model->minImg($model->userInfo->image, '48', '48')) ?> 41 + <?= Html::a(Html::img($model->minImg($model->userInfo->image, '48', '48')), [
  42 + 'performer/portfolio',
  43 + 'performer_id' => $model->id,
  44 + ]) ?>
50 </div> 45 </div>
51 <div class="search-worker-blocks-title-wr"> 46 <div class="search-worker-blocks-title-wr">
52 <?php if($model->userInfo->member): ?> 47 <?php if($model->userInfo->member): ?>
@@ -55,7 +50,10 @@ @@ -55,7 +50,10 @@
55 <div class="land-stars-new">NEW</div> 50 <div class="land-stars-new">NEW</div>
56 <?php endif; ?> 51 <?php endif; ?>
57 52
58 - <div class="search-worker-blocks-title"><?= $model->name ?></div> 53 + <div class="search-worker-blocks-title"><?= Html::a($model->name, [
  54 + 'performer/portfolio',
  55 + 'performer_id' => $model->id,
  56 + ]) ?></div>
59 </div> 57 </div>
60 <div class="search-worker-blocks-title-wr"> 58 <div class="search-worker-blocks-title-wr">
61 <div> 59 <div>
@@ -73,7 +71,7 @@ @@ -73,7 +71,7 @@
73 ]); 71 ]);
74 ?> 72 ?>
75 </div> 73 </div>
76 - <div class="search-worker-blocks-atr"><?=count($model->comments)?> мнений, <?= $model->userInfo->city ?></div> 74 + <div class="search-worker-blocks-atr"><?= count($model->comments) ?> мнений, <?= $model->userInfo->city ?></div>
77 </div> 75 </div>
78 <div class="search-worker-blocks-title-wr"> 76 <div class="search-worker-blocks-title-wr">
79 <div class="search-worker-blocks-status"> 77 <div class="search-worker-blocks-status">
@@ -82,18 +80,25 @@ @@ -82,18 +80,25 @@
82 <?php else: ?> 80 <?php else: ?>
83 <?= Html::img('/images/sidebar-ico/ico-9.png'); ?><span>свободен</span> 81 <?= Html::img('/images/sidebar-ico/ico-9.png'); ?><span>свободен</span>
84 <?php endif ?> 82 <?php endif ?>
85 -  
86 </div> 83 </div>
87 </div> 84 </div>
88 <div class="search-worker-blocks-geographic style"> 85 <div class="search-worker-blocks-geographic style">
89 -  
90 -  
91 <span>География работ: </span><?= implode(',', array_filter(ArrayHelper::getColumn($model->portfolios, 'city'))) ?> 86 <span>География работ: </span><?= implode(',', array_filter(ArrayHelper::getColumn($model->portfolios, 'city'))) ?>
92 </div> 87 </div>
93 <div class="search-worker-blocks-tags style"> 88 <div class="search-worker-blocks-tags style">
94 - <?php foreach($model->specializations as $specialization): ?>  
95 - <a href="#"><?= $specialization->specialization_name ?></a>,  
96 - <?php endforeach; ?> 89 + <?php
  90 + $count = count($model->specializations);
  91 + if($count > 20) {
  92 + $count = 20;
  93 + }
  94 + for($i = 0; $i < $count; $i++) {
  95 + echo Html::a($model->specializations[ $i ]->specialization_name, [
  96 + 'search/performer',
  97 + 'SearchPerformerForm[specialization][' . $model->specializations[ $i ]->specialization_id . ']' => $model->specializations[ $i ]->specialization_id,
  98 + 'SearchPerformerForm[portfolio]' => 0,
  99 + ]) . ', ';
  100 + }
  101 + ?>
97 </div> 102 </div>
98 <div class="search-worker-blocks-visit style"> 103 <div class="search-worker-blocks-visit style">
99 <span>Последний визит: </span><?= $model->userInfo->lastVisit ?></div> 104 <span>Последний визит: </span><?= $model->userInfo->lastVisit ?></div>