Blame view

frontend/controllers/TenderController.php 3.68 KB
97fb6489   Yarik   test
1
2
3
  <?php
  namespace frontend\controllers;
  
7e6d3f52   Administrator   24.02.16
4
  use common\models\Project;
38a6e1dd   Yarik   test
5
  use common\modules\comment\models\CommentProject;
97fb6489   Yarik   test
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  use Yii;
  use common\models\LoginForm;
  use frontend\models\PasswordResetRequestForm;
  use frontend\models\ResetPasswordForm;
  use frontend\models\SignupForm;
  use frontend\models\ContactForm;
  use frontend\models\Options;
  use frontend\models\OptionValues;
  use yii\base\InvalidParamException;
  use yii\web\BadRequestHttpException;
  use yii\web\Controller;
  use yii\filters\VerbFilter;
  use yii\filters\AccessControl;
  use frontend\models\OptionsToValues;
  use yii\validators\EmailValidator;
  use common\models\User;
  use yii\helpers\VarDumper;
  use common\models\Page; 
  use frontend\models\Option;
  use common\models\Social;
  
  
  /**
   * Site controller
   */
  class TenderController extends Controller
  {
38a6e1dd   Yarik   test
33
34
  
      public $enableCsrfValidation = false;
97fb6489   Yarik   test
35
36
37
38
39
40
41
42
43
44
45
46
47
      /**
       * @inheritdoc
       */
      public function actions()
      {
          return [
              'error' => [
                  'class' => 'yii\web\ErrorAction',
              ],
              'captcha' => [
                  'class' => 'yii\captcha\CaptchaAction',
                  'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
              ],
38a6e1dd   Yarik   test
48
49
50
51
52
53
              'verbs' => [
                  'class' => \yii\filters\VerbFilter::className(),
                  'actions' => [
                      'change-state' => ['post'],
                  ],
              ],
97fb6489   Yarik   test
54
55
56
57
58
59
60
61
62
          ];
      }
      /**
       * Displays homepage.
       *
       * @return mixed
       */
      public function actionIndex()
      {
7fc05ac5   Yarik   test
63
          return $this->redirect(['search/project']);
97fb6489   Yarik   test
64
65
      }
  
7e6d3f52   Administrator   24.02.16
66
      public function actionView($tender_id)
97fb6489   Yarik   test
67
      {
7e6d3f52   Administrator   24.02.16
68
69
70
71
72
          $model = Project::findOne($tender_id);
  
          return $this->render('view',[
              'model' => $model
          ]);
97fb6489   Yarik   test
73
74
      }
  
38a6e1dd   Yarik   test
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
      public function actionChangeState()
      {
          /**
           * @var User $user
           */
          $response = \Yii::$app->response;
          $response->format = $response::FORMAT_JSON;
          $user = \Yii::$app->user->identity;
          $project_id = \Yii::$app->request->post('project_id');
          $comment_id = \Yii::$app->request->post('comment_id');
          $state = \Yii::$app->request->post('state');
          if(empty($project_id) || empty($comment_id) || empty($state)) {
              return ['error' => 'project_id, comment_id, state должны быть отправлены в запросе'];
          }
          /**
           * @var Project $project
           */
          $project = Project::findOne($project_id);
          if(empty($project)) {
              return ['error' => 'Проект не найден'];
          } elseif($project->user_id != $user->id) {
              return ['error' => 'Вы можете менять статус только собственных проектов'];
          }
          /**
           * @var CommentProject $comment
           */
          $comment = CommentProject::find()->where(['comment_id' => $comment_id, 'model' => $project->className(), 'model_id' => $project->project_id])->one();
          if(empty($comment)) {
              return ['error' => 'Данного предложения не существует'];
          }
          if($comment->state == $comment::STATE_TRASH) {
              return ['error' => 'Исполнитель отменил данное предложение'];
          }
          $comment->scenario = $comment::SCENARIO_STATE;
          $comment->state = $state;
          if(!$comment->validate()) {
              return ['error' => 'Недопустимое значение state'];
          }
          if($comment->changeState()) {
              return ['message' => 'Автор оповещен о вашем решении'];
          } else {
              return ['error' => 'Ошибка обновления.'];
          }
      }
  
97fb6489   Yarik   test
120
  }