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,6 +32,7 @@ | ||
32 | * @property Specialization[] $specializations | 32 | * @property Specialization[] $specializations |
33 | * @property Currency $budgetCurrency | 33 | * @property Currency $budgetCurrency |
34 | * @property Project $parent | 34 | * @property Project $parent |
35 | + * @property int $hidden | ||
35 | */ | 36 | */ |
36 | class Project extends \yii\db\ActiveRecord | 37 | class Project extends \yii\db\ActiveRecord |
37 | { | 38 | { |
@@ -137,10 +138,37 @@ | @@ -137,10 +138,37 @@ | ||
137 | 'min' => 1, | 138 | 'min' => 1, |
138 | ], | 139 | ], |
139 | [ | 140 | [ |
140 | - [ 'deadline' ], | 141 | + [ |
142 | + 'deadline', | ||
143 | + ], | ||
141 | 'default', | 144 | 'default', |
142 | 'value' => 1, | 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,6 +199,7 @@ | ||
171 | 'specializationInput' => Yii::t('app', 'Специализации'), | 199 | 'specializationInput' => Yii::t('app', 'Специализации'), |
172 | 'paymentInput' => Yii::t('app', 'Способ оплаты'), | 200 | 'paymentInput' => Yii::t('app', 'Способ оплаты'), |
173 | 'specializationString' => Yii::t('app', 'Специализации'), | 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,6 +15,7 @@ | ||
15 | 15 | ||
16 | public $date_add_from; | 16 | public $date_add_from; |
17 | public $date_add_to; | 17 | public $date_add_to; |
18 | + public $budget_approx; | ||
18 | /** | 19 | /** |
19 | * @inheritdoc | 20 | * @inheritdoc |
20 | */ | 21 | */ |
@@ -39,6 +40,7 @@ | @@ -39,6 +40,7 @@ | ||
39 | 'date_add', | 40 | 'date_add', |
40 | 'date_end', | 41 | 'date_end', |
41 | 'budget', | 42 | 'budget', |
43 | + 'budget_approx', | ||
42 | 'city', | 44 | 'city', |
43 | 'street', | 45 | 'street', |
44 | 'house', | 46 | 'house', |
@@ -190,6 +192,11 @@ | @@ -190,6 +192,11 @@ | ||
190 | $this->file, | 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 | return $dataProvider; | 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,19 +649,7 @@ | ||
649 | } | 649 | } |
650 | $project->validate(); | 650 | $project->validate(); |
651 | if(!$project->hasErrors()) { | 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 | $project->unlinkAll('specializations', true); | 653 | $project->unlinkAll('specializations', true); |
666 | foreach($project->specializationInput as $one_specialization) { | 654 | foreach($project->specializationInput as $one_specialization) { |
667 | $project->link('specializations', Specialization::findOne($one_specialization)); | 655 | $project->link('specializations', Specialization::findOne($one_specialization)); |
@@ -747,19 +735,7 @@ | @@ -747,19 +735,7 @@ | ||
747 | } | 735 | } |
748 | $project->validate(); | 736 | $project->validate(); |
749 | if(!$project->hasErrors()) { | 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 | $project->unlinkAll('specializations', true); | 739 | $project->unlinkAll('specializations', true); |
764 | foreach($project->specializationInput as $one_specialization) { | 740 | foreach($project->specializationInput as $one_specialization) { |
765 | $project->link('specializations', Specialization::findOne($one_specialization)); | 741 | $project->link('specializations', Specialization::findOne($one_specialization)); |
frontend/views/accounts/_projects_form.php
@@ -14,6 +14,7 @@ | @@ -14,6 +14,7 @@ | ||
14 | use kartik\select2\Select2; | 14 | use kartik\select2\Select2; |
15 | use mihaildev\ckeditor\CKEditor; | 15 | use mihaildev\ckeditor\CKEditor; |
16 | use yii\helpers\Html; | 16 | use yii\helpers\Html; |
17 | + use yii\jui\DatePicker; | ||
17 | use yii\web\JsExpression; | 18 | use yii\web\JsExpression; |
18 | use yii\widgets\ActiveForm; | 19 | use yii\widgets\ActiveForm; |
19 | 20 | ||
@@ -210,6 +211,20 @@ | @@ -210,6 +211,20 @@ | ||
210 | </div> | 211 | </div> |
211 | </div> | 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 | <div class="input-blocks-wrapper admin-project-file"> | 228 | <div class="input-blocks-wrapper admin-project-file"> |
214 | <div class="input-blocks"> | 229 | <div class="input-blocks"> |
215 | <div style="position: absolute; float: left;top: 0; left: 0; z-index: 1; width: 100%; overflow: hidden"> | 230 | <div style="position: absolute; float: left;top: 0; left: 0; z-index: 1; width: 100%; overflow: hidden"> |
@@ -227,12 +242,13 @@ | @@ -227,12 +242,13 @@ | ||
227 | 242 | ||
228 | <div class="input-blocks-wrapper"> | 243 | <div class="input-blocks-wrapper"> |
229 | <div class="input-blocks admin-project-list admin-currency-second"> | 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 | </div> | 252 | </div> |
237 | </div> | 253 | </div> |
238 | 254 |
frontend/views/accounts/projects.php
@@ -3,12 +3,14 @@ | @@ -3,12 +3,14 @@ | ||
3 | * @var ProjectSearch $searchModel | 3 | * @var ProjectSearch $searchModel |
4 | * @var ActiveDataProvider $dataProvider | 4 | * @var ActiveDataProvider $dataProvider |
5 | */ | 5 | */ |
6 | + use common\models\Project; | ||
6 | use common\models\ProjectSearch; | 7 | use common\models\ProjectSearch; |
7 | use yii\data\ActiveDataProvider; | 8 | use yii\data\ActiveDataProvider; |
8 | use yii\grid\ActionColumn; | 9 | use yii\grid\ActionColumn; |
9 | use yii\grid\GridView; | 10 | use yii\grid\GridView; |
10 | use yii\helpers\Html; | 11 | use yii\helpers\Html; |
11 | use yii\jui\DatePicker; | 12 | use yii\jui\DatePicker; |
13 | + use yii\widgets\ActiveField; | ||
12 | 14 | ||
13 | $this->title = 'Проекты'; | 15 | $this->title = 'Проекты'; |
14 | $this->params[ 'breadcrumbs' ][] = $this->title; | 16 | $this->params[ 'breadcrumbs' ][] = $this->title; |
@@ -60,7 +62,21 @@ | @@ -60,7 +62,21 @@ | ||
60 | </div>", | 62 | </div>", |
61 | 'format' => 'html', | 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 | 'city', | 80 | 'city', |
65 | [ | 81 | [ |
66 | 'attribute' => 'specializationString', | 82 | 'attribute' => 'specializationString', |