From aa182b5c9d190b9e6e351ebdf043847ad0619a27 Mon Sep 17 00:00:00 2001 From: Yarik Date: Tue, 9 Feb 2016 15:16:31 +0200 Subject: [PATCH] test --- common/models/Project.php | 53 +++++++++++++++++++++++++++++++++-------------------- console/migrations/m160209_104201_add_field_project_budget.php | 2 ++ frontend/controllers/AccountsController.php | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- frontend/views/accounts/_blog_form.php | 3 +-- frontend/views/accounts/_projects_form.php | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 200 insertions(+), 26 deletions(-) create mode 100644 frontend/views/accounts/_projects_form.php diff --git a/common/models/Project.php b/common/models/Project.php index 283db00..799e510 100644 --- a/common/models/Project.php +++ b/common/models/Project.php @@ -73,6 +73,7 @@ ], [ [ + 'deadline', 'project_pid', 'payment_variant', 'contractual', @@ -85,6 +86,13 @@ ], [ [ + 'specializationInput', + 'paymentInput', + ], + 'safe', + ], + [ + [ 'name', 'link', 'budget', @@ -104,23 +112,26 @@ public function attributeLabels() { return [ - 'project_id' => Yii::t('app', 'Project ID'), - 'user_id' => Yii::t('app', 'User ID'), - 'name' => Yii::t('app', 'Название'), - 'link' => Yii::t('app', 'URL'), - 'project_pid' => Yii::t('app', 'Родительский проект'), - 'date_add' => Yii::t('app', 'Дата добавления'), - 'date_end' => Yii::t('app', 'Дата окончания'), - 'user_add_id' => Yii::t('app', 'User Add ID'), - 'view_count' => Yii::t('app', 'Количество просмотров'), - 'budget' => Yii::t('app', 'Бюджет'), - 'city' => Yii::t('app', 'Город'), - 'street' => Yii::t('app', 'Улица'), - 'house' => Yii::t('app', 'Дом'), - 'payment_variant' => Yii::t('app', 'Варианты оплаты'), - 'deadline' => Yii::t('app', 'Deadline'), - 'description' => Yii::t('app', 'Описание'), - 'contractual' => Yii::t('app', 'Договорной'), + 'project_id' => Yii::t('app', 'Project ID'), + 'user_id' => Yii::t('app', 'User ID'), + 'name' => Yii::t('app', 'Название'), + 'link' => Yii::t('app', 'URL'), + 'project_pid' => Yii::t('app', 'Родительский проект'), + 'date_add' => Yii::t('app', 'Дата добавления'), + 'date_end' => Yii::t('app', 'Дата окончания'), + 'user_add_id' => Yii::t('app', 'User Add ID'), + 'view_count' => Yii::t('app', 'Количество просмотров'), + 'budget' => Yii::t('app', 'Бюджет'), + 'city' => Yii::t('app', 'Город'), + 'street' => Yii::t('app', 'Улица'), + 'house' => Yii::t('app', 'Дом'), + 'payment_variant' => Yii::t('app', 'Варианты оплаты'), + 'deadline' => Yii::t('app', 'Срок выполнения'), + 'description' => Yii::t('app', 'Описание'), + 'contractual' => Yii::t('app', 'Договорной'), + 'file' => Yii::t('app', 'Присоединить файл'), + 'specializationInput' => Yii::t('app', 'Специализации'), + 'paymentInput' => Yii::t('app', 'Способ оплаты'), ]; } @@ -135,7 +146,7 @@ public function getPayments() { return $this->hasMany(Payment::className(), [ 'payment_id' => 'payment_id' ]) - ->viaTable('project_specialization', [ 'project_id' => 'project_id' ]); + ->viaTable('project_payment', [ 'project_id' => 'project_id' ]); } /** @@ -159,7 +170,8 @@ ->column(); } - public function setSpecializationInput($value) { + public function setSpecializationInput($value) + { $this->specializationInput = $value; } @@ -170,7 +182,8 @@ ->column(); } - public function setPaymentInput($value) { + public function setPaymentInput($value) + { $this->paymentInput = $value; } } diff --git a/console/migrations/m160209_104201_add_field_project_budget.php b/console/migrations/m160209_104201_add_field_project_budget.php index e6786d9..10dbf29 100644 --- a/console/migrations/m160209_104201_add_field_project_budget.php +++ b/console/migrations/m160209_104201_add_field_project_budget.php @@ -7,10 +7,12 @@ class m160209_104201_add_field_project_budget extends Migration public function up() { $this->addColumn('{{%project}}', 'contractual', $this->smallInteger()); + $this->addColumn('{{%project}}', 'file', $this->string()); } public function down() { $this->dropColumn('{{%project}}', 'contractual'); + $this->dropColumn('{{%project}}', 'file'); } } diff --git a/frontend/controllers/AccountsController.php b/frontend/controllers/AccountsController.php index df4b0ce..bfeb8d1 100755 --- a/frontend/controllers/AccountsController.php +++ b/frontend/controllers/AccountsController.php @@ -414,24 +414,101 @@ ->indexBy('payment_id') ->asArray() ->column(); + $projects = Project::find() + ->select([ + 'name', + 'project_id', + ]) + ->where([ 'user_id' => \Yii::$app->user->getId() ]) + ->indexBy('project_id') + ->asArray() + ->column(); $post = \Yii::$app->request->post(); - if(!empty($post)) { + if(!empty( $post )) { $project->load($post); $project->validate(); if(!$project->hasErrors()) { $project->save(); $project->unlinkAll('specializations', true); foreach($project->specializationInput as $one_specialization) { - $project->link('specialization', Specialization::findOne($one_specialization)); + $project->link('specializations', Specialization::findOne($one_specialization)); } $project->unlinkAll('payments', true); foreach($project->paymentInput as $one_payment) { - $project->link('payment', Payment::findOne($one_payment)); + $project->link('payments', Payment::findOne($one_payment)); } return $this->redirect('projects'); } } - return $this->render('_projects_form', [ 'project' => $project, 'specialization' => $specialization, 'payment' => $payment ]); + return $this->render('_projects_form', [ + 'project' => $project, + 'specialization' => $specialization, + 'payment' => $payment, + 'projects' => $projects, + ]); + } + + public function actionProjectsUpdate($id) + { + $project = Project::findOne($id); + $specialization = Specialization::find() + ->select([ + 'specialization_name', + 'specialization_id', + ]) + ->indexBy('specialization_id') + ->asArray() + ->column(); + $payment = Payment::find() + ->select([ + 'name', + 'payment_id', + ]) + ->indexBy('payment_id') + ->asArray() + ->column(); + $projects = Project::find() + ->select([ + 'name', + 'project_id', + ]) + ->where([ 'user_id' => \Yii::$app->user->getId() ]) + ->andWhere([ + 'not', + [ 'project_id' => $project->project_id ], + ]) + ->indexBy('project_id') + ->asArray() + ->column(); + $post = \Yii::$app->request->post(); + if(!empty( $post )) { + $project->load($post); + $project->validate(); + if(!$project->hasErrors()) { + $project->save(); + $project->unlinkAll('specializations', true); + foreach($project->specializationInput as $one_specialization) { + $project->link('specializations', Specialization::findOne($one_specialization)); + } + $project->unlinkAll('payments', true); + foreach($project->paymentInput as $one_payment) { + $project->link('payments', Payment::findOne($one_payment)); + } + return $this->render('_projects_form', [ + 'project' => $project, + 'specialization' => $specialization, + 'payment' => $payment, + 'projects' => $projects, + ]); + //return $this->redirect('projects'); + } + } + return $this->render('_projects_form', [ + 'project' => $project, + 'specialization' => $specialization, + 'payment' => $payment, + 'projects' => $projects, + ]); } public function actionGallery() diff --git a/frontend/views/accounts/_blog_form.php b/frontend/views/accounts/_blog_form.php index 19a5714..7a7662d 100644 --- a/frontend/views/accounts/_blog_form.php +++ b/frontend/views/accounts/_blog_form.php @@ -17,8 +17,7 @@ $form = ActiveForm::begin(); ?> -field($blog, 'date_add') - ->textInput([ 'disabled' => 'disabled' ]) ?> +date_add ?> field($blog, 'name') ->textInput() ?> diff --git a/frontend/views/accounts/_projects_form.php b/frontend/views/accounts/_projects_form.php new file mode 100644 index 0000000..1857a8e --- /dev/null +++ b/frontend/views/accounts/_projects_form.php @@ -0,0 +1,83 @@ +title = 'Мой профиль'; + $this->params[ 'breadcrumbs' ][] = $this->title; +?> +

title ?>

+ + + +field($project, 'name') + ->textInput() ?> + +field($project, 'link') + ->textInput() ?> + +field($project, 'project_pid') + ->dropDownList($projects) ?> + +field($project, 'specializationInput') + ->checkboxList($specialization) ?> + +
+ Адрес: + field($project, 'city', [ 'template' => "{label}{input}{hint}{error}" ]) + ->textInput() ?> + field($project, 'street', [ 'template' => "{label}{input}{hint}{error}" ]) + ->textInput() ?> + field($project, 'house', [ 'template' => "{label}{input}{hint}{error}" ]) + ->textInput() ?> +
+ +field($project, 'budget') + ->textInput() ?> + +field($project, 'contractual') + ->checkbox() ?> + +field($project, 'payment_variant') + ->radioList([ + 1 => 'Без предоплаты', + 2 => 'Предоплата возможна', + ]) ?> + +field($project, 'paymentInput') + ->checkboxList($payment) ?> + +field($project, 'deadline', [ 'template' => "{label}{input} дней\n{hint}\n{error}" ]) + ->input('number') ?> + +field($project, 'description') + ->widget(CKEditor::className()) ?> + +field($project, 'file') + ->fileInput([ 'multiple' => 'multiple' ]) ?> + +field($project, 'date_end') + ->dropDownList([ + 'День', + 'Неделю', + 'Месяц', + 'Год', + ]) ?> + + + +end(); +?> -- libgit2 0.21.4