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', | ... | ... |