Commit 32ed90fdd82ca0b7eedc0192654ef26b46126b16
1 parent
38a6e1dd
test
Showing
14 changed files
with
412 additions
and
77 deletions
Show diff stats
common/models/Project.php
| ... | ... | @@ -30,6 +30,7 @@ |
| 30 | 30 | * @property ProjectPayment[] $projectPayments |
| 31 | 31 | * @property ProjectSpecialization[] $projectSpecializations |
| 32 | 32 | * @property Specialization[] $specializations |
| 33 | + * @property Currency $budgetCurrency | |
| 33 | 34 | */ |
| 34 | 35 | class Project extends \yii\db\ActiveRecord |
| 35 | 36 | { | ... | ... |
common/models/User.php
| ... | ... | @@ -2,6 +2,7 @@ |
| 2 | 2 | namespace common\models; |
| 3 | 3 | |
| 4 | 4 | use common\modules\comment\models\Comment; |
| 5 | + use common\modules\comment\models\CommentProject; | |
| 5 | 6 | use common\modules\comment\models\Rating; |
| 6 | 7 | use Yii; |
| 7 | 8 | use yii\base\InvalidConfigException; |
| ... | ... | @@ -521,7 +522,8 @@ |
| 521 | 522 | */ |
| 522 | 523 | public function getJobs() |
| 523 | 524 | { |
| 524 | - return $this->hasMany(Job::className(), [ 'user_id' => 'id' ])->orderBy(['current' => SORT_DESC]); | |
| 525 | + return $this->hasMany(Job::className(), [ 'user_id' => 'id' ]) | |
| 526 | + ->orderBy([ 'current' => SORT_DESC ]); | |
| 525 | 527 | } |
| 526 | 528 | |
| 527 | 529 | /** |
| ... | ... | @@ -805,4 +807,25 @@ |
| 805 | 807 | ]) |
| 806 | 808 | ->scalar(); |
| 807 | 809 | } |
| 810 | + | |
| 811 | + public function getCommentProjects() | |
| 812 | + { | |
| 813 | + return $this->hasMany(CommentProject::className(), [ 'user_id' => 'id' ]); | |
| 814 | + } | |
| 815 | + | |
| 816 | + public function getChat($user_id) | |
| 817 | + { | |
| 818 | + return Chat::find() | |
| 819 | + ->where([ | |
| 820 | + 'or', | |
| 821 | + [ 'from_user' => $user_id, ], | |
| 822 | + [ 'to_user' => $user_id, ], | |
| 823 | + ]) | |
| 824 | + ->andWhere([ | |
| 825 | + 'or', | |
| 826 | + [ 'from_user' => $this->id, ], | |
| 827 | + [ 'to_user' => $this->id, ], | |
| 828 | + ]) | |
| 829 | + ->with('messages.user'); | |
| 830 | + } | |
| 808 | 831 | } | ... | ... |
common/modules/comment/models/CommentProject.php
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | |
| 4 | 4 | use common\models\Currency; |
| 5 | 5 | use common\models\File; |
| 6 | + use common\models\Project; | |
| 6 | 7 | use common\models\User; |
| 7 | 8 | use yii\db\ActiveQuery; |
| 8 | 9 | use yii\db\ActiveRecord; |
| ... | ... | @@ -27,6 +28,7 @@ |
| 27 | 28 | * @property int $term_to |
| 28 | 29 | * @property int $state |
| 29 | 30 | * @property Currency $currency |
| 31 | + * @property Project $project | |
| 30 | 32 | * @package common\modules\comment\models |
| 31 | 33 | */ |
| 32 | 34 | class CommentProject extends \yii\db\ActiveRecord |
| ... | ... | @@ -122,7 +124,7 @@ |
| 122 | 124 | 'integer', |
| 123 | 125 | 'max' => 4, |
| 124 | 126 | 'min' => 1, |
| 125 | - 'on' => self::SCENARIO_STATE, | |
| 127 | + 'on' => self::SCENARIO_STATE, | |
| 126 | 128 | ], |
| 127 | 129 | [ |
| 128 | 130 | [ 'state' ], |
| ... | ... | @@ -137,8 +139,11 @@ |
| 137 | 139 | [ |
| 138 | 140 | [ 'state' ], |
| 139 | 141 | 'in', |
| 140 | - 'range' => [1, 5], | |
| 141 | - 'on' => self::SCENARIO_OWNER, | |
| 142 | + 'range' => [ | |
| 143 | + 1, | |
| 144 | + 5, | |
| 145 | + ], | |
| 146 | + 'on' => self::SCENARIO_OWNER, | |
| 142 | 147 | ], |
| 143 | 148 | ]; |
| 144 | 149 | } |
| ... | ... | @@ -160,6 +165,9 @@ |
| 160 | 165 | self::SCENARIO_STATE => [ |
| 161 | 166 | 'state', |
| 162 | 167 | ], |
| 168 | + self::SCENARIO_OWNER => [ | |
| 169 | + 'state', | |
| 170 | + ], | |
| 163 | 171 | ]; |
| 164 | 172 | } |
| 165 | 173 | |
| ... | ... | @@ -400,6 +408,11 @@ |
| 400 | 408 | } |
| 401 | 409 | } |
| 402 | 410 | |
| 411 | + public function getProject() | |
| 412 | + { | |
| 413 | + return $this->hasOne(Project::className(), [ 'project_id' => 'model_id' ]); | |
| 414 | + } | |
| 415 | + | |
| 403 | 416 | /** |
| 404 | 417 | * @return User |
| 405 | 418 | */ | ... | ... |
common/modules/comment/models/CommentProjectSearch.php
0 → 100644
| 1 | +<?php | |
| 2 | + namespace common\modules\comment\models; | |
| 3 | + | |
| 4 | + use common\models\Currency; | |
| 5 | + use common\models\File; | |
| 6 | + use common\models\User; | |
| 7 | + use yii\data\ActiveDataProvider; | |
| 8 | + use yii\db\ActiveQuery; | |
| 9 | + use yii\db\ActiveRecord; | |
| 10 | + use yii\web\UploadedFile; | |
| 11 | + | |
| 12 | + /** | |
| 13 | + * Class Comment | |
| 14 | + * @property bool $guestComment | |
| 15 | + * @property integer $comment_id | |
| 16 | + * @property string $text | |
| 17 | + * @property int $user_id | |
| 18 | + * @property int $status | |
| 19 | + * @property string $date_add | |
| 20 | + * @property string $date_update | |
| 21 | + * @property string $date_delete | |
| 22 | + * @property string $model | |
| 23 | + * @property int $model_id | |
| 24 | + * @property string $files | |
| 25 | + * @property float $budget_from | |
| 26 | + * @property float $budget_to | |
| 27 | + * @property int $term_from | |
| 28 | + * @property int $term_to | |
| 29 | + * @property int $state | |
| 30 | + * @property Currency $currency | |
| 31 | + * @package common\modules\comment\models | |
| 32 | + */ | |
| 33 | + class CommentProjectSearch extends CommentProject | |
| 34 | + { | |
| 35 | + | |
| 36 | + const SCENARIO_SEARCH = 'search'; | |
| 37 | + | |
| 38 | + public function rules() | |
| 39 | + { | |
| 40 | + return [ | |
| 41 | + [ | |
| 42 | + [ | |
| 43 | + 'state', | |
| 44 | + ], | |
| 45 | + 'integer', | |
| 46 | + 'max' => 5, | |
| 47 | + 'min' => 1, | |
| 48 | + ], | |
| 49 | + [ | |
| 50 | + [ | |
| 51 | + 'state', | |
| 52 | + ], | |
| 53 | + 'default', | |
| 54 | + 'value' => self::STATE_NEW, | |
| 55 | + ], | |
| 56 | + ]; | |
| 57 | + } | |
| 58 | + | |
| 59 | + public function scenarios() | |
| 60 | + { | |
| 61 | + return array_merge(parent::scenarios(), [ | |
| 62 | + self::SCENARIO_SEARCH => [ | |
| 63 | + 'state', | |
| 64 | + ], | |
| 65 | + ]); | |
| 66 | + } | |
| 67 | + | |
| 68 | + public function search($params) | |
| 69 | + { | |
| 70 | + $query = CommentProject::find() | |
| 71 | + ->with('project') | |
| 72 | + ->with('project.budgetCurrency') | |
| 73 | + ->with('project.comments') | |
| 74 | + ->where([ 'user_id' => \Yii::$app->user->getId() ]); | |
| 75 | + | |
| 76 | + $dataProvider = new ActiveDataProvider([ | |
| 77 | + 'query' => $query, | |
| 78 | + ]); | |
| 79 | + | |
| 80 | + $this->load($params); | |
| 81 | + | |
| 82 | + if(!$this->validate()) { | |
| 83 | + $query->andWhere('0=1'); | |
| 84 | + return $dataProvider; | |
| 85 | + } | |
| 86 | + | |
| 87 | + $query->andWhere([ 'state' => $this->state ]); | |
| 88 | + | |
| 89 | + return $dataProvider; | |
| 90 | + } | |
| 91 | + | |
| 92 | + } | ... | ... |
common/modules/comment/rbac/ArtboxCommentCreateRule.php
| ... | ... | @@ -19,6 +19,10 @@ |
| 19 | 19 | |
| 20 | 20 | public function checkProject($user, $item, $params) |
| 21 | 21 | { |
| 22 | + $project = \common\models\Project::findOne($params['model_id']); | |
| 23 | + if($project->user_id == $user) { | |
| 24 | + return false; | |
| 25 | + } | |
| 22 | 26 | $comment = \common\modules\comment\models\CommentProject::find() |
| 23 | 27 | ->where([ 'model' => $params[ 'model' ], |
| 24 | 28 | 'model_id' => $params[ 'model_id' ], | ... | ... |
frontend/controllers/PerformerController.php
frontend/controllers/ProjectsController.php
| 1 | 1 | <?php |
| 2 | 2 | namespace frontend\controllers; |
| 3 | 3 | |
| 4 | + use common\models\ProjectSearch; | |
| 5 | + use common\models\User; | |
| 6 | + use common\modules\comment\models\CommentProject; | |
| 7 | + use common\modules\comment\models\CommentProjectSearch; | |
| 4 | 8 | use yii\filters\AccessControl; |
| 5 | 9 | use yii\web\Controller; |
| 6 | 10 | |
| 7 | 11 | class ProjectsController extends Controller |
| 8 | 12 | { |
| 13 | + | |
| 9 | 14 | public function behaviors() |
| 10 | 15 | { |
| 11 | 16 | return [ |
| ... | ... | @@ -24,6 +29,21 @@ |
| 24 | 29 | |
| 25 | 30 | public function actionIndex() |
| 26 | 31 | { |
| 27 | - return $this->render('projects'); | |
| 32 | + $model = new CommentProjectSearch([ 'scenario' => CommentProjectSearch::SCENARIO_SEARCH ]); | |
| 33 | + $groups = CommentProject::find() | |
| 34 | + ->select([ | |
| 35 | + 'COUNT(*)', | |
| 36 | + 'state', | |
| 37 | + ]) | |
| 38 | + ->asArray() | |
| 39 | + ->indexBy('state') | |
| 40 | + ->where([ 'user_id' => \Yii::$app->user->getId() ]) | |
| 41 | + ->groupBy([ 'state' ]) | |
| 42 | + ->column(); | |
| 43 | + $comments = $model->search(\Yii::$app->request->queryParams); | |
| 44 | + return $this->render('projects', [ | |
| 45 | + 'comments' => $comments, | |
| 46 | + 'groups' => $groups, | |
| 47 | + ]); | |
| 28 | 48 | } |
| 29 | 49 | } |
| 30 | 50 | \ No newline at end of file | ... | ... |
frontend/controllers/TenderController.php
| ... | ... | @@ -51,6 +51,16 @@ class TenderController extends Controller |
| 51 | 51 | 'change-state' => ['post'], |
| 52 | 52 | ], |
| 53 | 53 | ], |
| 54 | + 'access' => [ | |
| 55 | + 'class' => AccessControl::className(), | |
| 56 | + 'rules' => [ | |
| 57 | + [ | |
| 58 | + 'actions' => ['change-state'], | |
| 59 | + 'allow' => true, | |
| 60 | + 'roles' => [ '@' ], | |
| 61 | + ], | |
| 62 | + ], | |
| 63 | + ], | |
| 54 | 64 | ]; |
| 55 | 65 | } |
| 56 | 66 | /** |
| ... | ... | @@ -102,10 +112,18 @@ class TenderController extends Controller |
| 102 | 112 | if(empty($comment)) { |
| 103 | 113 | return ['error' => 'Данного предложения не существует']; |
| 104 | 114 | } |
| 105 | - if($comment->state == $comment::STATE_TRASH) { | |
| 115 | + if($comment->user_id == \Yii::$app->user->getId()) { | |
| 116 | + $comment->scenario = $comment::SCENARIO_OWNER; | |
| 117 | + } else { | |
| 118 | + $comment->scenario = $comment::SCENARIO_STATE; | |
| 119 | + } | |
| 120 | + if($comment->state == $comment::STATE_TRASH && $comment->scenario == $comment::SCENARIO_STATE) { | |
| 106 | 121 | return ['error' => 'Исполнитель отменил данное предложение']; |
| 107 | 122 | } |
| 108 | - $comment->scenario = $comment::SCENARIO_STATE; | |
| 123 | + if($comment->state == $comment::STATE_DENY && $comment->scenario == $comment::SCENARIO_OWNER) { | |
| 124 | + return ['error' => 'Заказчик отменил Ваше предложение']; | |
| 125 | + } | |
| 126 | + | |
| 109 | 127 | $comment->state = $state; |
| 110 | 128 | if(!$comment->validate()) { |
| 111 | 129 | return ['error' => 'Недопустимое значение state']; | ... | ... |
frontend/views/layouts/main.php
| ... | ... | @@ -154,7 +154,7 @@ AppAsset::register($this); |
| 154 | 154 | 'items' => [ |
| 155 | 155 | [ |
| 156 | 156 | 'url' => ['/projects'], |
| 157 | - 'template' => '<a href="{url}" class="main-menu-icons-home"><span>99+</span></a>', | |
| 157 | + 'template' => '<a href="{url}" class="main-menu-icons-home"><span>'.count(\Yii::$app->user->identity->commentProjects).'</span></a>', | |
| 158 | 158 | ], |
| 159 | 159 | [ |
| 160 | 160 | 'url' => ['chat/list'], | ... | ... |
frontend/views/layouts/performer.php
| ... | ... | @@ -25,7 +25,21 @@ |
| 25 | 25 | 'chat/message', |
| 26 | 26 | 'user_id' => $this->params[ 'user' ]->id, |
| 27 | 27 | ]), [ 'class' => 'blog-buttons-write' ]) ?> |
| 28 | - <a class="blog-buttons-add-favorite" href="#">Добавить<br>в закладки</a> | |
| 28 | + <?php | |
| 29 | + if(!empty( \Yii::$app->user->identity )) { | |
| 30 | + if($this->params[ 'user' ]->isBookmarked) { | |
| 31 | + echo Html::a('Убрать из закладок', [ '#' ], [ | |
| 32 | + 'class' => 'get-list artbox_bookmark_remove_performer', | |
| 33 | + 'data-id' => $this->params[ 'user' ]->id, | |
| 34 | + ]); | |
| 35 | + } else { | |
| 36 | + echo Html::a('Добавить в закладки', [ '#' ], [ | |
| 37 | + 'class' => 'get-list artbox_bookmark_add_performer', | |
| 38 | + 'data-id' => $this->params[ 'user' ]->id, | |
| 39 | + ]); | |
| 40 | + } | |
| 41 | + } | |
| 42 | + ?> | |
| 29 | 43 | </div> |
| 30 | 44 | </div> |
| 31 | 45 | </div> |
| ... | ... | @@ -160,7 +174,7 @@ |
| 160 | 174 | <li><img src="/images/sidebar-ico/ico_money.png" alt=""/> |
| 161 | 175 | <div class="sidebarvievstxt"> |
| 162 | 176 | <span class="sidebar-views-txt">Стоимость работ:<br/></span> |
| 163 | - <?= $this->params[ 'user' ]->userInfo->salary. ' ' . $this->params['user']->userInfo->currency->label ?> | |
| 177 | + <?= $this->params[ 'user' ]->userInfo->salary . ' ' . $this->params[ 'user' ]->userInfo->currency->label ?> | |
| 164 | 178 | </div> |
| 165 | 179 | </li> |
| 166 | 180 | <li><img src="/images/sidebar-ico/ico-13.png" alt=""/> | ... | ... |
frontend/views/performer/common.php
| ... | ... | @@ -97,63 +97,37 @@ |
| 97 | 97 | </ul> |
| 98 | 98 | </div> |
| 99 | 99 | <div class="profile-comments style"> |
| 100 | - <div class="company-performer-comm-title style">Отзывов: 54</div> | |
| 100 | + <div class="company-performer-comm-title style">Отзывов: <?= count($user->comments) ?></div> | |
| 101 | 101 | <div class="company-performer-comments-wr style"> |
| 102 | - <div class="company-performer-comments-bl"> | |
| 103 | - <div class="rating"> | |
| 104 | - <!--оценка--> | |
| 105 | - <input type="hidden" class="val" value="3"/> | |
| 106 | - <!--количество голосов--> | |
| 107 | - <input type="hidden" class="votes" value="12"/> | |
| 108 | - </div> | |
| 109 | - | |
| 110 | - <div class="company-performer-comments-autor">Отзыв от: Евгения</div> | |
| 111 | - <div class="company-performer-comments-txt">sfds</div> | |
| 112 | - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> | |
| 113 | - </div> | |
| 114 | - | |
| 115 | - <div class="company-performer-comments-bl"> | |
| 116 | - <div class="rating"> | |
| 117 | - <!--оценка--> | |
| 118 | - <input type="hidden" class="val" value="2"/> | |
| 119 | - <!--количество голосов--> | |
| 120 | - <input type="hidden" class="votes" value="12"/> | |
| 121 | - </div> | |
| 122 | - | |
| 123 | - <div class="company-performer-comments-autor">Отзыв от: Евгения</div> | |
| 124 | - <div class="company-performer-comments-txt">2Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.</div> | |
| 125 | - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> | |
| 126 | - </div> | |
| 127 | - | |
| 128 | - <div class="company-performer-comments-bl"> | |
| 129 | - <div class="rating"> | |
| 130 | - <!--оценка--> | |
| 131 | - <input type="hidden" class="val" value="4"/> | |
| 132 | - <!--количество голосов--> | |
| 133 | - <input type="hidden" class="votes" value="12"/> | |
| 134 | - </div> | |
| 135 | - | |
| 136 | - <div class="company-performer-comments-autor">Отзыв от: Евгения</div> | |
| 137 | - <div class="company-performer-comments-txt">3Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения. Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения. | |
| 138 | - </div> | |
| 139 | - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> | |
| 140 | - </div> | |
| 141 | - | |
| 142 | - <div class="company-performer-comments-bl"> | |
| 143 | - <div class="rating"> | |
| 144 | - <!--оценка--> | |
| 145 | - <input type="hidden" class="val" value="5"/> | |
| 146 | - <!--количество голосов--> | |
| 147 | - <input type="hidden" class="votes" value="12"/> | |
| 148 | - </div> | |
| 149 | - | |
| 150 | - <div class="company-performer-comments-autor">Отзыв от: Евгения</div> | |
| 151 | - <div class="company-performer-comments-txt">4Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения. | |
| 152 | - </div> | |
| 153 | - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> | |
| 154 | - </div> | |
| 102 | + <?php | |
| 103 | + $count = ( count($user->comments) > 4 ) ? 4 : count($user->comments); | |
| 104 | + for($i = 0; $i < $count; $i++) { | |
| 105 | + ?> | |
| 106 | + <div class="company-performer-comments-bl"> | |
| 107 | + <?php | |
| 108 | + if(!empty( $user->comments[ $i ]->rating )) { | |
| 109 | + ?> | |
| 110 | + <div class="rating"> | |
| 111 | + <!--оценка--> | |
| 112 | + <input type="hidden" class="val" value="<?= $user->comments[ $i ]->rating->value ?>"/> | |
| 113 | + <!--количество голосов--> | |
| 114 | + <input type="hidden" class="votes" value="1"/> | |
| 115 | + </div> | |
| 116 | + <?php | |
| 117 | + } | |
| 118 | + ?> | |
| 119 | + <div class="company-performer-comments-autor">Отзыв от: <?= $user->comments[$i]->user->name ?></div> | |
| 120 | + <div class="company-performer-comments-txt"><?= $user->comments[$i]->text ?></div> | |
| 121 | + <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> | |
| 122 | + </div> | |
| 123 | + <?php | |
| 124 | + } | |
| 125 | + ?> | |
| 155 | 126 | </div> |
| 156 | - <div class="company-performer-comm-see-all-butt style"><a href="#">Читать все отзывы</a> | |
| 127 | + <div class="company-performer-comm-see-all-butt style"> | |
| 128 | + <?php | |
| 129 | + echo Html::a('Читать все отзывы', ['performer/review', 'performer_id' => $user->id]); | |
| 130 | + ?> | |
| 157 | 131 | </div> |
| 158 | 132 | </div> |
| 159 | 133 | </div> | ... | ... |
| 1 | +<?php | |
| 2 | + /** | |
| 3 | + * @var CommentProject $model | |
| 4 | + * @var int $key | |
| 5 | + * @var integer $index | |
| 6 | + * @var ListView $widget | |
| 7 | + */ | |
| 8 | + use common\models\Option; | |
| 9 | + use common\modules\comment\models\CommentProject; | |
| 10 | + use yii\data\ActiveDataProvider; | |
| 11 | + use yii\helpers\Html; | |
| 12 | + use yii\widgets\ListView; | |
| 13 | + | |
| 14 | +?> | |
| 15 | +<div class="left-left-proektant-cabinet"> | |
| 16 | + <?php | |
| 17 | + echo Html::a($model->project->name, ['tender/view', 'tender_id' => $model->project->project_id], ['class' => 'srch-prof-title']); | |
| 18 | + ?> | |
| 19 | + <div class="srch-prof-budget"> | |
| 20 | + <span></span> | |
| 21 | + Бюджет: | |
| 22 | + <?php | |
| 23 | + if($model->project->contractual) { | |
| 24 | + echo 'Договорной'; | |
| 25 | + } else { | |
| 26 | + echo $model->project->budget . ' ' . $model->project->budgetCurrency->label; | |
| 27 | + } | |
| 28 | + ?> | |
| 29 | + </div> | |
| 30 | + | |
| 31 | + <div class="srch-prof-text"> | |
| 32 | + <?= $model->project->description ?> | |
| 33 | + </div> | |
| 34 | + <div class="srch-prof-params-wr"> | |
| 35 | + <div class="srch-prof-params srch-prof-params-city"> | |
| 36 | + <img src="/images/ico-city.png" alt=""/><span><?= $model->project->city ?></span> | |
| 37 | + </div> | |
| 38 | + <div class="srch-prof-params srch-prof-params-clock"> | |
| 39 | + <img src="/images/ico-clock.png" alt=""/><span><?= \Yii::$app->formatter->asDate(time($model->project->description), 'php:d.m.Y') ?></span> | |
| 40 | + </div> | |
| 41 | + <div class="srch-prof-params srch-prof-params-comm"> | |
| 42 | + <img src="/images/ico-comm.png" alt=""/><span><?= count($model->project->comments) ?> предложения</span> | |
| 43 | + </div> | |
| 44 | + </div> | |
| 45 | +</div> | |
| 46 | + | |
| 47 | +<div class="right-proektant-cabinet"> | |
| 48 | + <div class="right-proektant-cabinet-candidate"> | |
| 49 | + <img src="/images/cabinet/ico-<?= $model->state ?>.png" alt=""/> | |
| 50 | + <span> | |
| 51 | + <?php | |
| 52 | + switch($model->state) { | |
| 53 | + case 1: | |
| 54 | + echo 'Заказчик еще не рассмотрел Ваше предложение'; | |
| 55 | + break; | |
| 56 | + case 2: | |
| 57 | + echo 'Ваша кандидатура на рассмотрении'; | |
| 58 | + break; | |
| 59 | + case 3: | |
| 60 | + echo 'Вы назначены исполнителем'; | |
| 61 | + break; | |
| 62 | + case 4: | |
| 63 | + echo 'Заказчик отказал Вашему предложению'; | |
| 64 | + break; | |
| 65 | + case 5: | |
| 66 | + echo 'Вы отказались от данного предложения'; | |
| 67 | + break; | |
| 68 | + } | |
| 69 | + ?> | |
| 70 | + </span> | |
| 71 | + </div> | |
| 72 | + <div style="clear:both"></div> | |
| 73 | + <div class="right-proektant-cabinet-message-new"> | |
| 74 | + <img src="/images/cabinet/ico-6.png" alt=""/> | |
| 75 | + <?php | |
| 76 | + echo Html::a(count(\Yii::$app->user->identity->getChat($model->project->user_id) | |
| 77 | + ->one()->messages) . ' сообщения', [ | |
| 78 | + 'chat/message', | |
| 79 | + 'user_id' => $model->project->user_id, | |
| 80 | + ]); | |
| 81 | + if($model->state == 5) { | |
| 82 | + echo Html::a('Отменить', [ '#' ], [ | |
| 83 | + 'data-project-id' => $model->project->project_id, | |
| 84 | + 'data-comment-id' => $model->comment_id, | |
| 85 | + 'class' => 'artbox_project_make_new', | |
| 86 | + ]); | |
| 87 | + } else { | |
| 88 | + echo Html::a('Отказаться', [ '#' ], [ | |
| 89 | + 'data-project-id' => $model->project->project_id, | |
| 90 | + 'data-comment-id' => $model->comment_id, | |
| 91 | + 'class' => 'artbox_project_make_trash', | |
| 92 | + ]); | |
| 93 | + } | |
| 94 | + ?> | |
| 95 | + </div> | |
| 96 | +</div> | |
| 0 | 97 | \ No newline at end of file | ... | ... |
frontend/views/projects/projects.php
| 1 | 1 | <?php |
| 2 | + /** | |
| 3 | + * @var int[] $groups | |
| 4 | + * @var ActiveDataProvider $comments | |
| 5 | + */ | |
| 2 | 6 | use common\models\Option; |
| 7 | + use yii\data\ActiveDataProvider; | |
| 8 | + use yii\helpers\Html; | |
| 9 | + use yii\widgets\ListView; | |
| 3 | 10 | |
| 4 | 11 | $this->title = 'Мой профиль'; |
| 5 | -$this->params['breadcrumbs'][] = $this->title; | |
| 12 | + $this->params[ 'breadcrumbs' ][] = $this->title; | |
| 6 | 13 | ?> |
| 7 | 14 | <div class="section-box content"> |
| 8 | 15 | <div class="section-box-22"> |
| ... | ... | @@ -14,29 +21,71 @@ $this->params['breadcrumbs'][] = $this->title; |
| 14 | 21 | <ul class="cabinet-list style"> |
| 15 | 22 | <li> |
| 16 | 23 | <img src="/images/cabinet/ico-1.png" alt=""/> |
| 17 | - <span>Не определен </span>17 | |
| 24 | + <span> | |
| 25 | + <?= Html::a('Не определен', [ | |
| 26 | + 'projects/index', | |
| 27 | + 'CommentProjectSearch[state]' => 1, | |
| 28 | + ]) ?> | |
| 29 | + </span><?= ( !empty( $groups[ 1 ] ) ) ? $groups[ 1 ] : 0 ?> | |
| 18 | 30 | </li> |
| 19 | 31 | <li> |
| 20 | 32 | <img src="/images/cabinet/ico-2.png" alt=""/> |
| 21 | - <span>Кандидат </span>0 | |
| 33 | + <span> | |
| 34 | + <?= Html::a('Кандидат', [ | |
| 35 | + 'projects/index', | |
| 36 | + 'CommentProjectSearch[state]' => 2, | |
| 37 | + ]) ?> | |
| 38 | + </span><?= ( !empty( $groups[ 2 ] ) ) ? $groups[ 2 ] : 0 ?> | |
| 22 | 39 | </li> |
| 23 | 40 | <li> |
| 24 | 41 | <img src="/images/cabinet/ico-3.png" alt=""/> |
| 25 | - <span>Исполнитель </span>0 | |
| 42 | + <span> | |
| 43 | + <?= Html::a('Исполнитель', [ | |
| 44 | + 'projects/index', | |
| 45 | + 'CommentProjectSearch[state]' => 3, | |
| 46 | + ]) ?> | |
| 47 | + </span><?= ( !empty( $groups[ 3 ] ) ) ? $groups[ 3 ] : 0 ?> | |
| 26 | 48 | </li> |
| 27 | 49 | <li> |
| 28 | 50 | <img src="/images/cabinet/ico-4.png" alt=""/> |
| 29 | - <span>Отказали </span>0 | |
| 51 | + <span> | |
| 52 | + <?= Html::a('Отказали', [ | |
| 53 | + 'projects/index', | |
| 54 | + 'CommentProjectSearch[state]' => 4, | |
| 55 | + ]) ?> | |
| 56 | + </span><?= ( !empty( $groups[ 4 ] ) ) ? $groups[ 4 ] : 0 ?> | |
| 30 | 57 | </li> |
| 31 | 58 | <li> |
| 32 | - <span>Корзина </span>7 | |
| 59 | + <span> | |
| 60 | + <?= Html::a('Корзина', [ | |
| 61 | + 'projects/index', | |
| 62 | + 'CommentProjectSearch[state]' => 5, | |
| 63 | + ]) ?> | |
| 64 | + </span><?= ( !empty( $groups[ 5 ] ) ) ? $groups[ 5 ] : 0 ?> | |
| 33 | 65 | </li> |
| 34 | 66 | </ul> |
| 67 | + <?php | |
| 68 | + echo ListView::widget([ | |
| 69 | + 'dataProvider' => $comments, | |
| 70 | + 'options' => [ | |
| 71 | + 'class' => 'style', | |
| 72 | + ], | |
| 73 | + 'itemOptions' => [ | |
| 74 | + 'class' => 'search-profile-blocks', | |
| 75 | + ], | |
| 76 | + 'itemView' => '_projects_list_view', | |
| 77 | + ]); | |
| 78 | + ?> | |
| 79 | + <?php | |
| 80 | + /* | |
| 81 | + ?> | |
| 35 | 82 | <div class="style"> |
| 36 | 83 | <div class="search-profile-blocks"> |
| 37 | 84 | <div class="left-left-proektant-cabinet"> |
| 38 | 85 | <a href="" class="srch-prof-title">Создание проекта дома</a> |
| 39 | - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> | |
| 86 | + <div class="srch-prof-budget"> | |
| 87 | + <span></span>Бюджет: 20 000 грн (Договорной) | |
| 88 | + </div> | |
| 40 | 89 | |
| 41 | 90 | <div class="srch-prof-text"> |
| 42 | 91 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
| ... | ... | @@ -72,7 +121,9 @@ $this->params['breadcrumbs'][] = $this->title; |
| 72 | 121 | <div class="search-profile-blocks"> |
| 73 | 122 | <div class="left-left-proektant-cabinet"> |
| 74 | 123 | <a href="" class="srch-prof-title">Создание проекта дома</a> |
| 75 | - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> | |
| 124 | + <div class="srch-prof-budget"> | |
| 125 | + <span></span>Бюджет: 20 000 грн (Договорной) | |
| 126 | + </div> | |
| 76 | 127 | |
| 77 | 128 | <div class="srch-prof-text"> |
| 78 | 129 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
| ... | ... | @@ -108,7 +159,9 @@ $this->params['breadcrumbs'][] = $this->title; |
| 108 | 159 | <div class="search-profile-blocks"> |
| 109 | 160 | <div class="left-left-proektant-cabinet"> |
| 110 | 161 | <a href="" class="srch-prof-title">Создание проекта дома</a> |
| 111 | - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> | |
| 162 | + <div class="srch-prof-budget"> | |
| 163 | + <span></span>Бюджет: 20 000 грн (Договорной) | |
| 164 | + </div> | |
| 112 | 165 | |
| 113 | 166 | <div class="srch-prof-text"> |
| 114 | 167 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
| ... | ... | @@ -144,7 +197,9 @@ $this->params['breadcrumbs'][] = $this->title; |
| 144 | 197 | <div class="search-profile-blocks"> |
| 145 | 198 | <div class="left-left-proektant-cabinet"> |
| 146 | 199 | <a href="" class="srch-prof-title">Создание проекта дома</a> |
| 147 | - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> | |
| 200 | + <div class="srch-prof-budget"> | |
| 201 | + <span></span>Бюджет: 20 000 грн (Договорной) | |
| 202 | + </div> | |
| 148 | 203 | |
| 149 | 204 | <div class="srch-prof-text"> |
| 150 | 205 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
| ... | ... | @@ -180,7 +235,9 @@ $this->params['breadcrumbs'][] = $this->title; |
| 180 | 235 | <div class="search-profile-blocks"> |
| 181 | 236 | <div class="left-left-proektant-cabinet"> |
| 182 | 237 | <a href="" class="srch-prof-title">Создание проекта дома</a> |
| 183 | - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> | |
| 238 | + <div class="srch-prof-budget"> | |
| 239 | + <span></span>Бюджет: 20 000 грн (Договорной) | |
| 240 | + </div> | |
| 184 | 241 | |
| 185 | 242 | <div class="srch-prof-text"> |
| 186 | 243 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
| ... | ... | @@ -226,6 +283,9 @@ $this->params['breadcrumbs'][] = $this->title; |
| 226 | 283 | <a href="#" class="navi-buttons-yet">Еще 24 проекта</a> |
| 227 | 284 | </div> |
| 228 | 285 | </div> |
| 286 | + <?php | |
| 287 | + */ | |
| 288 | + ?> | |
| 229 | 289 | |
| 230 | 290 | |
| 231 | 291 | </div> |
| ... | ... | @@ -236,6 +296,5 @@ $this->params['breadcrumbs'][] = $this->title; |
| 236 | 296 | <div> |
| 237 | 297 | |
| 238 | 298 | |
| 239 | - | |
| 240 | 299 | </div> |
| 241 | 300 | </div> |
| 242 | 301 | \ No newline at end of file | ... | ... |
frontend/web/js/forms.js
| ... | ... | @@ -461,6 +461,25 @@ $(document).ready( |
| 461 | 461 | } |
| 462 | 462 | ); |
| 463 | 463 | }); |
| 464 | + $(document).on('click', '.artbox_project_make_trash', function(e) { | |
| 465 | + e.preventDefault(); | |
| 466 | + var project_id = $(this).data('project-id'); | |
| 467 | + var comment_id = $(this).data('comment-id'); | |
| 468 | + var state = 5; | |
| 469 | + var link = $(this); | |
| 470 | + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) { | |
| 471 | + if(data.error) { | |
| 472 | + alert(data.error); | |
| 473 | + } else { | |
| 474 | + alert(data.message); | |
| 475 | + } | |
| 476 | + }, 'json').fail( | |
| 477 | + function() | |
| 478 | + { | |
| 479 | + alert(txtErrorModal); | |
| 480 | + } | |
| 481 | + ); | |
| 482 | + }); | |
| 464 | 483 | |
| 465 | 484 | |
| 466 | 485 | //offer | ... | ... |