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