Commit 1a3b0a63a6c6e0aed2c6612c216f476881cf2ac9

Authored by Yarik
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 6 use common\modules\comment\models\CommentProject;
7 7 use common\modules\fileloader\behaviors\FileloaderBehavior;
8 8 use Yii;
  9 + use yii\base\ModelEvent;
  10 + use yii\behaviors\AttributeBehavior;
9 11 use yii\behaviors\BlameableBehavior;
10 12 use yii\behaviors\TimestampBehavior;
  13 + use yii\db\ActiveRecord;
11 14 use yii\db\Expression;
12 15  
13 16 /**
... ... @@ -68,6 +71,33 @@
68 71 'updatedAtAttribute' => false,
69 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 101 'slug' => [
72 102 'class' => 'common\behaviors\Slug',
73 103 'in_attribute' => 'name',
... ... @@ -129,7 +159,6 @@
129 159 [
130 160 'name',
131 161 'link',
132   - 'budget',
133 162 'city',
134 163 'street',
135 164 'house',
... ... @@ -138,6 +167,14 @@
138 167 'max' => 255,
139 168 ],
140 169 [
  170 + [
  171 + 'budget',
  172 + ],
  173 + 'number',
  174 + 'skipOnEmpty' => true,
  175 + 'min' => 0,
  176 + ],
  177 + [
141 178 [ 'view_count' ],
142 179 'default',
143 180 'value' => 0,
... ...
common/models/TenderSearch.php
... ... @@ -90,13 +90,13 @@
90 90 public function attributeLabels()
91 91 {
92 92 return [
93   - 'specialization' => Yii::t('app', 'specialization'),
  93 + 'specialization' => Yii::t('app', 'specialization'),
94 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 120 {
121 121 $query = Project::find()
122 122 ->joinWith('projectSpecializations')
123   - ->joinWith('projectPayments');
  123 + ->joinWith('projectPayments')
  124 + ->joinWith('user.companyInfo');
124 125  
125 126 $dataProvider = new ActiveDataProvider([
126 127 'query' => $query,
... ... @@ -200,9 +201,32 @@
200 201 'city' => $this->city,
201 202 ])
202 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 231 ->andWhere([
208 232 'project_payment.payment_id' => $this->payment,
... ...