Commit aa182b5c9d190b9e6e351ebdf043847ad0619a27

Authored by Yarik
1 parent 84ebac3d

test

common/models/Project.php
@@ -73,6 +73,7 @@ @@ -73,6 +73,7 @@
73 ], 73 ],
74 [ 74 [
75 [ 75 [
  76 + 'deadline',
76 'project_pid', 77 'project_pid',
77 'payment_variant', 78 'payment_variant',
78 'contractual', 79 'contractual',
@@ -85,6 +86,13 @@ @@ -85,6 +86,13 @@
85 ], 86 ],
86 [ 87 [
87 [ 88 [
  89 + 'specializationInput',
  90 + 'paymentInput',
  91 + ],
  92 + 'safe',
  93 + ],
  94 + [
  95 + [
88 'name', 96 'name',
89 'link', 97 'link',
90 'budget', 98 'budget',
@@ -104,23 +112,26 @@ @@ -104,23 +112,26 @@
104 public function attributeLabels() 112 public function attributeLabels()
105 { 113 {
106 return [ 114 return [
107 - 'project_id' => Yii::t('app', 'Project ID'),  
108 - 'user_id' => Yii::t('app', 'User ID'),  
109 - 'name' => Yii::t('app', 'Название'),  
110 - 'link' => Yii::t('app', 'URL'),  
111 - 'project_pid' => Yii::t('app', 'Родительский проект'),  
112 - 'date_add' => Yii::t('app', 'Дата добавления'),  
113 - 'date_end' => Yii::t('app', 'Дата окончания'),  
114 - 'user_add_id' => Yii::t('app', 'User Add ID'),  
115 - 'view_count' => Yii::t('app', 'Количество просмотров'),  
116 - 'budget' => Yii::t('app', 'Бюджет'),  
117 - 'city' => Yii::t('app', 'Город'),  
118 - 'street' => Yii::t('app', 'Улица'),  
119 - 'house' => Yii::t('app', 'Дом'),  
120 - 'payment_variant' => Yii::t('app', 'Варианты оплаты'),  
121 - 'deadline' => Yii::t('app', 'Deadline'),  
122 - 'description' => Yii::t('app', 'Описание'),  
123 - 'contractual' => Yii::t('app', 'Договорной'), 115 + 'project_id' => Yii::t('app', 'Project ID'),
  116 + 'user_id' => Yii::t('app', 'User ID'),
  117 + 'name' => Yii::t('app', 'Название'),
  118 + 'link' => Yii::t('app', 'URL'),
  119 + 'project_pid' => Yii::t('app', 'Родительский проект'),
  120 + 'date_add' => Yii::t('app', 'Дата добавления'),
  121 + 'date_end' => Yii::t('app', 'Дата окончания'),
  122 + 'user_add_id' => Yii::t('app', 'User Add ID'),
  123 + 'view_count' => Yii::t('app', 'Количество просмотров'),
  124 + 'budget' => Yii::t('app', 'Бюджет'),
  125 + 'city' => Yii::t('app', 'Город'),
  126 + 'street' => Yii::t('app', 'Улица'),
  127 + 'house' => Yii::t('app', 'Дом'),
  128 + 'payment_variant' => Yii::t('app', 'Варианты оплаты'),
  129 + 'deadline' => Yii::t('app', 'Срок выполнения'),
  130 + 'description' => Yii::t('app', 'Описание'),
  131 + 'contractual' => Yii::t('app', 'Договорной'),
  132 + 'file' => Yii::t('app', 'Присоединить файл'),
  133 + 'specializationInput' => Yii::t('app', 'Специализации'),
  134 + 'paymentInput' => Yii::t('app', 'Способ оплаты'),
124 ]; 135 ];
125 } 136 }
126 137
@@ -135,7 +146,7 @@ @@ -135,7 +146,7 @@
135 public function getPayments() 146 public function getPayments()
136 { 147 {
137 return $this->hasMany(Payment::className(), [ 'payment_id' => 'payment_id' ]) 148 return $this->hasMany(Payment::className(), [ 'payment_id' => 'payment_id' ])
138 - ->viaTable('project_specialization', [ 'project_id' => 'project_id' ]); 149 + ->viaTable('project_payment', [ 'project_id' => 'project_id' ]);
139 } 150 }
140 151
141 /** 152 /**
@@ -159,7 +170,8 @@ @@ -159,7 +170,8 @@
159 ->column(); 170 ->column();
160 } 171 }
161 172
162 - public function setSpecializationInput($value) { 173 + public function setSpecializationInput($value)
  174 + {
163 $this->specializationInput = $value; 175 $this->specializationInput = $value;
164 } 176 }
165 177
@@ -170,7 +182,8 @@ @@ -170,7 +182,8 @@
170 ->column(); 182 ->column();
171 } 183 }
172 184
173 - public function setPaymentInput($value) { 185 + public function setPaymentInput($value)
  186 + {
174 $this->paymentInput = $value; 187 $this->paymentInput = $value;
175 } 188 }
176 } 189 }
console/migrations/m160209_104201_add_field_project_budget.php
@@ -7,10 +7,12 @@ class m160209_104201_add_field_project_budget extends Migration @@ -7,10 +7,12 @@ class m160209_104201_add_field_project_budget extends Migration
7 public function up() 7 public function up()
8 { 8 {
9 $this->addColumn('{{%project}}', 'contractual', $this->smallInteger()); 9 $this->addColumn('{{%project}}', 'contractual', $this->smallInteger());
  10 + $this->addColumn('{{%project}}', 'file', $this->string());
10 } 11 }
11 12
12 public function down() 13 public function down()
13 { 14 {
14 $this->dropColumn('{{%project}}', 'contractual'); 15 $this->dropColumn('{{%project}}', 'contractual');
  16 + $this->dropColumn('{{%project}}', 'file');
15 } 17 }
16 } 18 }
frontend/controllers/AccountsController.php
@@ -414,24 +414,101 @@ @@ -414,24 +414,101 @@
414 ->indexBy('payment_id') 414 ->indexBy('payment_id')
415 ->asArray() 415 ->asArray()
416 ->column(); 416 ->column();
  417 + $projects = Project::find()
  418 + ->select([
  419 + 'name',
  420 + 'project_id',
  421 + ])
  422 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  423 + ->indexBy('project_id')
  424 + ->asArray()
  425 + ->column();
417 $post = \Yii::$app->request->post(); 426 $post = \Yii::$app->request->post();
418 - if(!empty($post)) { 427 + if(!empty( $post )) {
419 $project->load($post); 428 $project->load($post);
420 $project->validate(); 429 $project->validate();
421 if(!$project->hasErrors()) { 430 if(!$project->hasErrors()) {
422 $project->save(); 431 $project->save();
423 $project->unlinkAll('specializations', true); 432 $project->unlinkAll('specializations', true);
424 foreach($project->specializationInput as $one_specialization) { 433 foreach($project->specializationInput as $one_specialization) {
425 - $project->link('specialization', Specialization::findOne($one_specialization)); 434 + $project->link('specializations', Specialization::findOne($one_specialization));
426 } 435 }
427 $project->unlinkAll('payments', true); 436 $project->unlinkAll('payments', true);
428 foreach($project->paymentInput as $one_payment) { 437 foreach($project->paymentInput as $one_payment) {
429 - $project->link('payment', Payment::findOne($one_payment)); 438 + $project->link('payments', Payment::findOne($one_payment));
430 } 439 }
431 return $this->redirect('projects'); 440 return $this->redirect('projects');
432 } 441 }
433 } 442 }
434 - return $this->render('_projects_form', [ 'project' => $project, 'specialization' => $specialization, 'payment' => $payment ]); 443 + return $this->render('_projects_form', [
  444 + 'project' => $project,
  445 + 'specialization' => $specialization,
  446 + 'payment' => $payment,
  447 + 'projects' => $projects,
  448 + ]);
  449 + }
  450 +
  451 + public function actionProjectsUpdate($id)
  452 + {
  453 + $project = Project::findOne($id);
  454 + $specialization = Specialization::find()
  455 + ->select([
  456 + 'specialization_name',
  457 + 'specialization_id',
  458 + ])
  459 + ->indexBy('specialization_id')
  460 + ->asArray()
  461 + ->column();
  462 + $payment = Payment::find()
  463 + ->select([
  464 + 'name',
  465 + 'payment_id',
  466 + ])
  467 + ->indexBy('payment_id')
  468 + ->asArray()
  469 + ->column();
  470 + $projects = Project::find()
  471 + ->select([
  472 + 'name',
  473 + 'project_id',
  474 + ])
  475 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  476 + ->andWhere([
  477 + 'not',
  478 + [ 'project_id' => $project->project_id ],
  479 + ])
  480 + ->indexBy('project_id')
  481 + ->asArray()
  482 + ->column();
  483 + $post = \Yii::$app->request->post();
  484 + if(!empty( $post )) {
  485 + $project->load($post);
  486 + $project->validate();
  487 + if(!$project->hasErrors()) {
  488 + $project->save();
  489 + $project->unlinkAll('specializations', true);
  490 + foreach($project->specializationInput as $one_specialization) {
  491 + $project->link('specializations', Specialization::findOne($one_specialization));
  492 + }
  493 + $project->unlinkAll('payments', true);
  494 + foreach($project->paymentInput as $one_payment) {
  495 + $project->link('payments', Payment::findOne($one_payment));
  496 + }
  497 + return $this->render('_projects_form', [
  498 + 'project' => $project,
  499 + 'specialization' => $specialization,
  500 + 'payment' => $payment,
  501 + 'projects' => $projects,
  502 + ]);
  503 + //return $this->redirect('projects');
  504 + }
  505 + }
  506 + return $this->render('_projects_form', [
  507 + 'project' => $project,
  508 + 'specialization' => $specialization,
  509 + 'payment' => $payment,
  510 + 'projects' => $projects,
  511 + ]);
435 } 512 }
436 513
437 public function actionGallery() 514 public function actionGallery()
frontend/views/accounts/_blog_form.php
@@ -17,8 +17,7 @@ @@ -17,8 +17,7 @@
17 $form = ActiveForm::begin(); 17 $form = ActiveForm::begin();
18 ?> 18 ?>
19 19
20 -<?= $form->field($blog, 'date_add')  
21 - ->textInput([ 'disabled' => 'disabled' ]) ?> 20 +<?= $blog->date_add ?>
22 21
23 <?= $form->field($blog, 'name') 22 <?= $form->field($blog, 'name')
24 ->textInput() ?> 23 ->textInput() ?>
frontend/views/accounts/_projects_form.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var Project $project
  4 + * @var Specialization[] $specialization
  5 + * @var Payment[] $payment
  6 + * @var string[] $projects
  7 + */
  8 + use common\models\Payment;
  9 + use common\models\Project;
  10 + use common\models\Specialization;
  11 + use common\widgets\ImageUploader;
  12 + use mihaildev\ckeditor\CKEditor;
  13 + use yii\helpers\Html;
  14 + use yii\widgets\ActiveForm;
  15 +
  16 + $this->title = 'Мой профиль';
  17 + $this->params[ 'breadcrumbs' ][] = $this->title;
  18 +?>
  19 +<h1><?= $this->title ?></h1>
  20 +
  21 +<?php
  22 + $form = ActiveForm::begin();
  23 +?>
  24 +
  25 +<?= $form->field($project, 'name')
  26 + ->textInput() ?>
  27 +
  28 +<?= $form->field($project, 'link')
  29 + ->textInput() ?>
  30 +
  31 +<?= $form->field($project, 'project_pid')
  32 + ->dropDownList($projects) ?>
  33 +
  34 +<?= $form->field($project, 'specializationInput')
  35 + ->checkboxList($specialization) ?>
  36 +
  37 +<div class="form-inline">
  38 + Адрес:
  39 + <?= $form->field($project, 'city', [ 'template' => "{label}{input}{hint}{error}" ])
  40 + ->textInput() ?>
  41 + <?= $form->field($project, 'street', [ 'template' => "{label}{input}{hint}{error}" ])
  42 + ->textInput() ?>
  43 + <?= $form->field($project, 'house', [ 'template' => "{label}{input}{hint}{error}" ])
  44 + ->textInput() ?>
  45 +</div>
  46 +
  47 +<?= $form->field($project, 'budget')
  48 + ->textInput() ?>
  49 +
  50 +<?= $form->field($project, 'contractual')
  51 + ->checkbox() ?>
  52 +
  53 +<?= $form->field($project, 'payment_variant')
  54 + ->radioList([
  55 + 1 => 'Без предоплаты',
  56 + 2 => 'Предоплата возможна',
  57 + ]) ?>
  58 +
  59 +<?= $form->field($project, 'paymentInput')
  60 + ->checkboxList($payment) ?>
  61 +
  62 +<?= $form->field($project, 'deadline', [ 'template' => "{label}{input} дней\n{hint}\n{error}" ])
  63 + ->input('number') ?>
  64 +
  65 +<?= $form->field($project, 'description')
  66 + ->widget(CKEditor::className()) ?>
  67 +
  68 +<?= $form->field($project, 'file')
  69 + ->fileInput([ 'multiple' => 'multiple' ]) ?>
  70 +
  71 +<?= $form->field($project, 'date_end')
  72 + ->dropDownList([
  73 + 'День',
  74 + 'Неделю',
  75 + 'Месяц',
  76 + 'Год',
  77 + ]) ?>
  78 +
  79 +<?= Html::submitButton('Добавить') ?>
  80 +
  81 +<?php
  82 + $form->end();
  83 +?>