Commit 1a3b0a63a6c6e0aed2c6612c216f476881cf2ac9
1 parent
4920d7a3
Commit
Showing
2 changed files
with
72 additions
and
11 deletions
Show diff stats
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/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, |