From 492ed7f73e583761b2190fc893d8d364d10431c3 Mon Sep 17 00:00:00 2001 From: Yarik Date: Mon, 21 Mar 2016 16:22:10 +0200 Subject: [PATCH] test --- common/models/Project.php | 31 ++++++++++++++++++++++++++++++- common/models/ProjectSearch.php | 7 +++++++ console/migrations/m160321_132138_project_add_status.php | 16 ++++++++++++++++ frontend/controllers/AccountsController.php | 28 ++-------------------------- frontend/views/accounts/_projects_form.php | 28 ++++++++++++++++++++++------ frontend/views/accounts/projects.php | 18 +++++++++++++++++- 6 files changed, 94 insertions(+), 34 deletions(-) create mode 100644 console/migrations/m160321_132138_project_add_status.php diff --git a/common/models/Project.php b/common/models/Project.php index 0c1f454..c2195bf 100644 --- a/common/models/Project.php +++ b/common/models/Project.php @@ -32,6 +32,7 @@ * @property Specialization[] $specializations * @property Currency $budgetCurrency * @property Project $parent + * @property int $hidden */ class Project extends \yii\db\ActiveRecord { @@ -137,10 +138,37 @@ 'min' => 1, ], [ - [ 'deadline' ], + [ + 'deadline', + ], 'default', 'value' => 1, ], + [ + [ 'date_end' ], + 'default', + 'value' => date('Y-m-d H:i:s'), + ], + [ + [ 'hidden' ], + 'boolean', + ], + [ + ['hidden'], + 'default', + 'value' => 0, + ], + [ + ['date_end'], + 'filter', + 'filter' => function($value) { + $unix = strtotime($value); + if($unix <= time()) { + $unix = time() + (3600 * 24 * 7); + } + return date('Y-m-d', $unix); + } + ] ]; } @@ -171,6 +199,7 @@ 'specializationInput' => Yii::t('app', 'Специализации'), 'paymentInput' => Yii::t('app', 'Способ оплаты'), 'specializationString' => Yii::t('app', 'Специализации'), + 'hidden' => Yii::t('app', 'Снять проект с тендера'), ]; } diff --git a/common/models/ProjectSearch.php b/common/models/ProjectSearch.php index 1166813..98ae2d5 100644 --- a/common/models/ProjectSearch.php +++ b/common/models/ProjectSearch.php @@ -15,6 +15,7 @@ public $date_add_from; public $date_add_to; + public $budget_approx; /** * @inheritdoc */ @@ -39,6 +40,7 @@ 'date_add', 'date_end', 'budget', + 'budget_approx', 'city', 'street', 'house', @@ -190,6 +192,11 @@ $this->file, ]); + if(!empty($this->budget_approx)) { + $query->andWhere(['between', 'budget', ($this->budget_approx - ($this->budget_approx/10)), ($this->budget_approx + ($this->budget_approx/10))]); + $query->andWhere(['not', ['contractual' => 1]]); + } + return $dataProvider; } } diff --git a/console/migrations/m160321_132138_project_add_status.php b/console/migrations/m160321_132138_project_add_status.php new file mode 100644 index 0000000..2450b4f --- /dev/null +++ b/console/migrations/m160321_132138_project_add_status.php @@ -0,0 +1,16 @@ +addColumn('{{%project}}', 'hidden', $this->integer()->defaultValue(0)); + } + + public function down() + { + $this->dropColumn('{{%project}}', 'hidden'); + } +} diff --git a/frontend/controllers/AccountsController.php b/frontend/controllers/AccountsController.php index a84add2..5a039e1 100755 --- a/frontend/controllers/AccountsController.php +++ b/frontend/controllers/AccountsController.php @@ -649,19 +649,7 @@ } $project->validate(); if(!$project->hasErrors()) { - $date_end = new \DateTime(); - switch($post[ 'Project' ][ 'date_end' ]) { - case 2: - $date_end->modify('+14 day'); - break; - case 3: - $date_end->modify('+30 day'); - break; - default: - $date_end->modify('+7 day'); - }; - $project->date_end = \Yii::$app->formatter->asDate($date_end->getTimestamp(), 'short'); - $project->save(); + $project->save(false); $project->unlinkAll('specializations', true); foreach($project->specializationInput as $one_specialization) { $project->link('specializations', Specialization::findOne($one_specialization)); @@ -747,19 +735,7 @@ } $project->validate(); if(!$project->hasErrors()) { - $date_end = new \DateTime(); - switch($post[ 'Project' ][ 'date_end' ]) { - case 2: - $date_end->modify('+14 day'); - break; - case 3: - $date_end->modify('+30 day'); - break; - default: - $date_end->modify('+7 day'); - }; - $project->date_end = \Yii::$app->formatter->asDate($date_end->getTimestamp(), 'short'); - $project->save(); + $project->save(false); $project->unlinkAll('specializations', true); foreach($project->specializationInput as $one_specialization) { $project->link('specializations', Specialization::findOne($one_specialization)); diff --git a/frontend/views/accounts/_projects_form.php b/frontend/views/accounts/_projects_form.php index b0e4e96..d7c2f3d 100644 --- a/frontend/views/accounts/_projects_form.php +++ b/frontend/views/accounts/_projects_form.php @@ -14,6 +14,7 @@ use kartik\select2\Select2; use mihaildev\ckeditor\CKEditor; use yii\helpers\Html; + use yii\jui\DatePicker; use yii\web\JsExpression; use yii\widgets\ActiveForm; @@ -210,6 +211,20 @@ + +
+ field($project, 'files[]') + ->fileInput([ 'class' => 'multi', 'multiple' => 'multiple' ]) + ->label(false) ?> + Прикрепить файл +
Максимальный размер
файла 5 МБ
+
+ +
@@ -227,12 +242,13 @@
- field($project, 'date_end') - ->dropDownList([ - 1 => 'Неделя', - 2 => '2 недели', - 3 => 'Месяц', - ]) ?> + field($project, 'date_end')->widget(DatePicker::className(), ['dateFormat' => 'yyyy-MM-dd', 'clientOptions' => ['minDate' => 1]]) ?> +
+
+ +
+
+ field($project, 'hidden')->checkbox() ?>
diff --git a/frontend/views/accounts/projects.php b/frontend/views/accounts/projects.php index b545c73..c5349fb 100755 --- a/frontend/views/accounts/projects.php +++ b/frontend/views/accounts/projects.php @@ -3,12 +3,14 @@ * @var ProjectSearch $searchModel * @var ActiveDataProvider $dataProvider */ + use common\models\Project; use common\models\ProjectSearch; use yii\data\ActiveDataProvider; use yii\grid\ActionColumn; use yii\grid\GridView; use yii\helpers\Html; use yii\jui\DatePicker; + use yii\widgets\ActiveField; $this->title = 'Проекты'; $this->params[ 'breadcrumbs' ][] = $this->title; @@ -60,7 +62,21 @@
", 'format' => 'html', ], - 'budget', + [ + 'attribute' => 'budget', + 'filter' => Html::activeInput('text', $searchModel, 'budget_approx'), + 'value' => function($model, $key, $index, $column) { + /** + * @var Project $model + */ + if($model->contractual) { + return 'Договорной'; + } else { + return $model->budget; + } + }, + 'label' => $searchModel->getAttributeLabel('budget').' +/- 10%', + ], 'city', [ 'attribute' => 'specializationString', -- libgit2 0.21.4