Commit 492ed7f73e583761b2190fc893d8d364d10431c3
1 parent
50ed5626
test
Showing
6 changed files
with
94 additions
and
34 deletions
Show diff stats
common/models/Project.php
... | ... | @@ -32,6 +32,7 @@ |
32 | 32 | * @property Specialization[] $specializations |
33 | 33 | * @property Currency $budgetCurrency |
34 | 34 | * @property Project $parent |
35 | + * @property int $hidden | |
35 | 36 | */ |
36 | 37 | class Project extends \yii\db\ActiveRecord |
37 | 38 | { |
... | ... | @@ -137,10 +138,37 @@ |
137 | 138 | 'min' => 1, |
138 | 139 | ], |
139 | 140 | [ |
140 | - [ 'deadline' ], | |
141 | + [ | |
142 | + 'deadline', | |
143 | + ], | |
141 | 144 | 'default', |
142 | 145 | 'value' => 1, |
143 | 146 | ], |
147 | + [ | |
148 | + [ 'date_end' ], | |
149 | + 'default', | |
150 | + 'value' => date('Y-m-d H:i:s'), | |
151 | + ], | |
152 | + [ | |
153 | + [ 'hidden' ], | |
154 | + 'boolean', | |
155 | + ], | |
156 | + [ | |
157 | + ['hidden'], | |
158 | + 'default', | |
159 | + 'value' => 0, | |
160 | + ], | |
161 | + [ | |
162 | + ['date_end'], | |
163 | + 'filter', | |
164 | + 'filter' => function($value) { | |
165 | + $unix = strtotime($value); | |
166 | + if($unix <= time()) { | |
167 | + $unix = time() + (3600 * 24 * 7); | |
168 | + } | |
169 | + return date('Y-m-d', $unix); | |
170 | + } | |
171 | + ] | |
144 | 172 | ]; |
145 | 173 | } |
146 | 174 | |
... | ... | @@ -171,6 +199,7 @@ |
171 | 199 | 'specializationInput' => Yii::t('app', 'Специализации'), |
172 | 200 | 'paymentInput' => Yii::t('app', 'Способ оплаты'), |
173 | 201 | 'specializationString' => Yii::t('app', 'Специализации'), |
202 | + 'hidden' => Yii::t('app', 'Снять проект с тендера'), | |
174 | 203 | ]; |
175 | 204 | } |
176 | 205 | ... | ... |
common/models/ProjectSearch.php
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 | |
16 | 16 | public $date_add_from; |
17 | 17 | public $date_add_to; |
18 | + public $budget_approx; | |
18 | 19 | /** |
19 | 20 | * @inheritdoc |
20 | 21 | */ |
... | ... | @@ -39,6 +40,7 @@ |
39 | 40 | 'date_add', |
40 | 41 | 'date_end', |
41 | 42 | 'budget', |
43 | + 'budget_approx', | |
42 | 44 | 'city', |
43 | 45 | 'street', |
44 | 46 | 'house', |
... | ... | @@ -190,6 +192,11 @@ |
190 | 192 | $this->file, |
191 | 193 | ]); |
192 | 194 | |
195 | + if(!empty($this->budget_approx)) { | |
196 | + $query->andWhere(['between', 'budget', ($this->budget_approx - ($this->budget_approx/10)), ($this->budget_approx + ($this->budget_approx/10))]); | |
197 | + $query->andWhere(['not', ['contractual' => 1]]); | |
198 | + } | |
199 | + | |
193 | 200 | return $dataProvider; |
194 | 201 | } |
195 | 202 | } | ... | ... |
console/migrations/m160321_132138_project_add_status.php
0 → 100644
1 | +<?php | |
2 | + | |
3 | +use yii\db\Migration; | |
4 | + | |
5 | +class m160321_132138_project_add_status extends Migration | |
6 | +{ | |
7 | + public function up() | |
8 | + { | |
9 | + $this->addColumn('{{%project}}', 'hidden', $this->integer()->defaultValue(0)); | |
10 | + } | |
11 | + | |
12 | + public function down() | |
13 | + { | |
14 | + $this->dropColumn('{{%project}}', 'hidden'); | |
15 | + } | |
16 | +} | ... | ... |
frontend/controllers/AccountsController.php
... | ... | @@ -649,19 +649,7 @@ |
649 | 649 | } |
650 | 650 | $project->validate(); |
651 | 651 | if(!$project->hasErrors()) { |
652 | - $date_end = new \DateTime(); | |
653 | - switch($post[ 'Project' ][ 'date_end' ]) { | |
654 | - case 2: | |
655 | - $date_end->modify('+14 day'); | |
656 | - break; | |
657 | - case 3: | |
658 | - $date_end->modify('+30 day'); | |
659 | - break; | |
660 | - default: | |
661 | - $date_end->modify('+7 day'); | |
662 | - }; | |
663 | - $project->date_end = \Yii::$app->formatter->asDate($date_end->getTimestamp(), 'short'); | |
664 | - $project->save(); | |
652 | + $project->save(false); | |
665 | 653 | $project->unlinkAll('specializations', true); |
666 | 654 | foreach($project->specializationInput as $one_specialization) { |
667 | 655 | $project->link('specializations', Specialization::findOne($one_specialization)); |
... | ... | @@ -747,19 +735,7 @@ |
747 | 735 | } |
748 | 736 | $project->validate(); |
749 | 737 | if(!$project->hasErrors()) { |
750 | - $date_end = new \DateTime(); | |
751 | - switch($post[ 'Project' ][ 'date_end' ]) { | |
752 | - case 2: | |
753 | - $date_end->modify('+14 day'); | |
754 | - break; | |
755 | - case 3: | |
756 | - $date_end->modify('+30 day'); | |
757 | - break; | |
758 | - default: | |
759 | - $date_end->modify('+7 day'); | |
760 | - }; | |
761 | - $project->date_end = \Yii::$app->formatter->asDate($date_end->getTimestamp(), 'short'); | |
762 | - $project->save(); | |
738 | + $project->save(false); | |
763 | 739 | $project->unlinkAll('specializations', true); |
764 | 740 | foreach($project->specializationInput as $one_specialization) { |
765 | 741 | $project->link('specializations', Specialization::findOne($one_specialization)); | ... | ... |
frontend/views/accounts/_projects_form.php
... | ... | @@ -14,6 +14,7 @@ |
14 | 14 | use kartik\select2\Select2; |
15 | 15 | use mihaildev\ckeditor\CKEditor; |
16 | 16 | use yii\helpers\Html; |
17 | + use yii\jui\DatePicker; | |
17 | 18 | use yii\web\JsExpression; |
18 | 19 | use yii\widgets\ActiveForm; |
19 | 20 | |
... | ... | @@ -210,6 +211,20 @@ |
210 | 211 | </div> |
211 | 212 | </div> |
212 | 213 | |
214 | +<?php | |
215 | +/* == Здесь епты == */ | |
216 | +?> | |
217 | +<div class="tender-file-wr"> | |
218 | + <?= $form->field($project, 'files[]') | |
219 | + ->fileInput([ 'class' => 'multi', 'multiple' => 'multiple' ]) | |
220 | + ->label(false) ?> | |
221 | + <a href="#" class="addfilemulti">Прикрепить файл</a> | |
222 | + <div class="max-size">Максимальный размер<br/>файла 5 МБ</div> | |
223 | +</div> | |
224 | +<?php | |
225 | +/* == .i. Конец епты .i. == */ | |
226 | +?> | |
227 | + | |
213 | 228 | <div class="input-blocks-wrapper admin-project-file"> |
214 | 229 | <div class="input-blocks"> |
215 | 230 | <div style="position: absolute; float: left;top: 0; left: 0; z-index: 1; width: 100%; overflow: hidden"> |
... | ... | @@ -227,12 +242,13 @@ |
227 | 242 | |
228 | 243 | <div class="input-blocks-wrapper"> |
229 | 244 | <div class="input-blocks admin-project-list admin-currency-second"> |
230 | - <?= $form->field($project, 'date_end') | |
231 | - ->dropDownList([ | |
232 | - 1 => 'Неделя', | |
233 | - 2 => '2 недели', | |
234 | - 3 => 'Месяц', | |
235 | - ]) ?> | |
245 | + <?= $form->field($project, 'date_end')->widget(DatePicker::className(), ['dateFormat' => 'yyyy-MM-dd', 'clientOptions' => ['minDate' => 1]]) ?> | |
246 | + </div> | |
247 | +</div> | |
248 | + | |
249 | +<div class="input-blocks-wrapper"> | |
250 | + <div class="input-blocks admin-project-list admin-currency-second"> | |
251 | + <?= $form->field($project, 'hidden')->checkbox() ?> | |
236 | 252 | </div> |
237 | 253 | </div> |
238 | 254 | ... | ... |
frontend/views/accounts/projects.php
... | ... | @@ -3,12 +3,14 @@ |
3 | 3 | * @var ProjectSearch $searchModel |
4 | 4 | * @var ActiveDataProvider $dataProvider |
5 | 5 | */ |
6 | + use common\models\Project; | |
6 | 7 | use common\models\ProjectSearch; |
7 | 8 | use yii\data\ActiveDataProvider; |
8 | 9 | use yii\grid\ActionColumn; |
9 | 10 | use yii\grid\GridView; |
10 | 11 | use yii\helpers\Html; |
11 | 12 | use yii\jui\DatePicker; |
13 | + use yii\widgets\ActiveField; | |
12 | 14 | |
13 | 15 | $this->title = 'Проекты'; |
14 | 16 | $this->params[ 'breadcrumbs' ][] = $this->title; |
... | ... | @@ -60,7 +62,21 @@ |
60 | 62 | </div>", |
61 | 63 | 'format' => 'html', |
62 | 64 | ], |
63 | - 'budget', | |
65 | + [ | |
66 | + 'attribute' => 'budget', | |
67 | + 'filter' => Html::activeInput('text', $searchModel, 'budget_approx'), | |
68 | + 'value' => function($model, $key, $index, $column) { | |
69 | + /** | |
70 | + * @var Project $model | |
71 | + */ | |
72 | + if($model->contractual) { | |
73 | + return 'Договорной'; | |
74 | + } else { | |
75 | + return $model->budget; | |
76 | + } | |
77 | + }, | |
78 | + 'label' => $searchModel->getAttributeLabel('budget').' +/- 10%', | |
79 | + ], | |
64 | 80 | 'city', |
65 | 81 | [ |
66 | 82 | 'attribute' => 'specializationString', | ... | ... |