Blame view

frontend/controllers/PerformerController.php 14.3 KB
eb7e82fb   Administrator   29.02.16
1
2
3
4
5
6
7
8
  <?php

      namespace frontend\controllers;

  

      use common\models\Blog;

      use common\models\Fields;

      use common\models\Gallery;

      use common\models\Portfolio;

      use common\models\PortfolioSpecialization;

38ffb9db   Yarik   test
9
      use common\models\PortfolioUser;

eb7e82fb   Administrator   29.02.16
10
      use Yii;

b4142e17   Yarik   test
11
      use yii\data\ActiveDataProvider;

eb7e82fb   Administrator   29.02.16
12
13
      use yii\data\ArrayDataProvider;

      use yii\data\Pagination;

42931736   Yarik   test
14
      use yii\data\Sort;

239b3249   Yarik   test
15
      use yii\db\ActiveQuery;

eb7e82fb   Administrator   29.02.16
16
17
18
19
      use yii\helpers\ArrayHelper;

      use yii\web\BadRequestHttpException;

      use yii\web\Controller;

      use common\models\User;

e82beebc   Yarik   test
20
      use yii\web\NotFoundHttpException;

eb7e82fb   Administrator   29.02.16
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  

      /**

       * Site controller

       */

      class PerformerController extends Controller

      {

  

          public $layout = 'performer';

  

          public $user;

  

          public $defaultAction = 'common';

  

          public function afterAction($action, $result)

          {

              if(!empty( $action->controller->actionParams[ 'performer_id' ] )) {

                  $performer_id = $action->controller->actionParams[ 'performer_id' ];

                  $user = User::findOne($performer_id);

                  if(!empty( $user->userInfo )) {

                      $user->userInfo->updateCounters([ 'view_count' => 1 ]);

                  }

              }

              return parent::afterAction($action, $result);

          }

  

          /**

           * @inheritdoc

           */

          public function actions()

          {

              return [

                  'error'   => [

                      'class' => 'yii\web\ErrorAction',

                  ],

                  'captcha' => [

                      'class'           => 'yii\captcha\CaptchaAction',

                      'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : NULL,

                  ],

              ];

          }

  

5014e10b   Yarik   test
62
          public function actionCommon($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
63
          {

38a6e1dd   Yarik   test
64
65
66
              $user = User::find()

                          ->where([ 'id' => $performer_id ])

                          ->with('jobs')

32ed90fd   Yarik   test
67
68
                          ->with('comments')

                          ->with('comments.rating')

38a6e1dd   Yarik   test
69
                          ->one();

eb7e82fb   Administrator   29.02.16
70
71
  

              if(!$user instanceof User) {

e82beebc   Yarik   test
72
                  throw new NotFoundHttpException('Пользователь не найден');

eb7e82fb   Administrator   29.02.16
73
74
75
              }

  

              $educations = Fields::getData($user->id, $user->className(), 'education');

225c5168   Yarik   test
76
77
              $developments = Fields::getData($user->id, $user->className(), 'development');

              $courses = Fields::getData($user->id, $user->className(), 'courses');

eb7e82fb   Administrator   29.02.16
78
79
80
              $phones = Fields::getData($user->id, $user->className(), 'phone');

              $sites = Fields::getData($user->id, $user->className(), 'site');

              $soft = implode(', ', ArrayHelper::getColumn(Fields::getData($user->id, $user->className(), 'soft'), 'soft'));

5d627502   Yarik   test
81
82
83
84
85
86
87
88
89
              $geography = $user->getPortfolios()

                                ->select([

                                    'count' => 'COUNT(*)',

                                    'city'  => 'city',

                                ])

                                ->groupBy('city')

                                ->asArray()

                                ->indexBy('city')

                                ->column();

eb7e82fb   Administrator   29.02.16
90
              return $this->render('common', [

225c5168   Yarik   test
91
92
93
94
95
96
97
                  'user'         => $user,

                  'educations'   => $educations,

                  'developments' => $developments,

                  'courses'      => $courses,

                  'phones'       => $phones,

                  'sites'        => $sites,

                  'soft'         => $soft,

5d627502   Yarik   test
98
                  'geography'    => $geography,

eb7e82fb   Administrator   29.02.16
99
100
101
102
              ]);

  

          }

  

5014e10b   Yarik   test
103
          public function actionPortfolio($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

              $projects = ArrayHelper::getColumn($user->portfolios, 'portfolio_id');

  

              $filters = PortfolioSpecialization::find()

                                                ->select([

                                                    "specialization_id",

                                                    "COUNT('specialization_id') AS count",

                                                ])

                                                ->where([ "portfolio_id" => $projects ])

                                                ->groupBy("specialization_id")

                                                ->all();

  

              $portfolio = new ArrayDataProvider([

4ff3ca88   Yarik   test
122
123
124
                  'allModels'  => $user->getPortfolios()

                                       ->orderBy('portfolio_id')

                                       ->all(),

eb7e82fb   Administrator   29.02.16
125
126
127
128
129
130
131
132
133
134
135
136
137
138
                  'pagination' => [

                      'pageSize' => 9,

                  ],

              ]);

  

              return $this->render('portfolio', [

                  'user'      => $user,

                  'filters'   => $filters,

                  'portfolio' => $portfolio,

                  'count'     => count($user->portfolios),

              ]);

  

          }

  

5014e10b   Yarik   test
139
          public function actionPortfolioFilter($performer_id, $filter, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

              $portfolios = ArrayHelper::getColumn($user->portfolios, 'portfolio_id');

  

              $filters = PortfolioSpecialization::find()

                                                ->select([

                                                    "specialization_id",

                                                    "COUNT('specialization_id') AS count",

                                                ])

                                                ->where([ "portfolio_id" => $portfolios ])

                                                ->groupBy("specialization_id")

                                                ->all();

  

              $filter_result = PortfolioSpecialization::find()

                                                      ->where([

                                                          'specialization_id' => $filter,

                                                          'portfolio_id'      => $portfolios,

                                                      ])

                                                      ->all();

  

              $portfolio = new ArrayDataProvider([

                  'allModels'  => Portfolio::find()

                                           ->where([ 'portfolio_id' => ArrayHelper::getColumn($filter_result, 'portfolio_id') ])

                                           ->all(),

                  'pagination' => [

                      'pageSize' => 9,

                  ],

              ]);

  

              return $this->render('portfolio', [

                  'user'      => $user,

                  'filters'   => $filters,

                  'portfolio' => $portfolio,

                  'filter_id' => $filter,

                  'count'     => count($user->portfolios),

              ]);

          }

  

38ffb9db   Yarik   test
182
          public function actionPortfolioView($performer_id, $portfolio_id, $portfolio_user = NULL, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
183
184
185
186
          {

              $user = User::findOne($performer_id);

              $portfolio = $user->getPortfolios()

                                ->where([ 'portfolio_id' => $portfolio_id ])

239b3249   Yarik   test
187
188
189
190
191
192
193
194
                                ->with([

                                    'portfolioUsers' => function($query) {

                                        /**

                                         * @var ActiveQuery $query

                                         */

                                        $query->andWhere([ 'status' => 1 ]);

                                    },

                                ])

38ffb9db   Yarik   test
195
                                ->with('portfolioUsers.gallery')

eb7e82fb   Administrator   29.02.16
196
                                ->one();

e82beebc   Yarik   test
197
198
199
              if(empty($portfolio)) {

                  throw new NotFoundHttpException('Портфолио не найдено');

              }

38ffb9db   Yarik   test
200
201
              if(!empty( $portfolio_user )) {

                  $portfolio_user = PortfolioUser::find()

239b3249   Yarik   test
202
203
204
205
                                                 ->where([

                                                     'portfolio_user_id' => $portfolio_user,

                                                     'status'            => 1,

                                                 ])

38ffb9db   Yarik   test
206
207
208
                                                 ->with('gallery')

                                                 ->with('user')

                                                 ->one();

239b3249   Yarik   test
209
210
211
212
213
214
215
216
                  if(empty( $portfolio_user )) {

                      $this->redirect([

                          'portfolio-view',

                          'performer_id' => $performer_id,

                          'portfolio_id' => $portfolio_id,

                          'type'         => $type,

                      ]);

                  }

38ffb9db   Yarik   test
217
218
219
              } else {

                  $portfolio->updateCounters([ 'view_count' => 1 ]);

              }

eb7e82fb   Administrator   29.02.16
220
              return $this->render('portfolio-view', [

38ffb9db   Yarik   test
221
222
223
                  'user'           => $user,

                  'portfolio'      => $portfolio,

                  'portfolio_user' => $portfolio_user,

eb7e82fb   Administrator   29.02.16
224
225
226
              ]);

          }

  

5014e10b   Yarik   test
227
          public function actionProjects($performer_id, $type = 'implementer')

b4142e17   Yarik   test
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

              $dataProvider = new ActiveDataProvider([

                  'query'      => $user->getProjects(),

                  'pagination' => [

                      'pageSize' => 10,

                  ],

              ]);

  

              return $this->render('project-list', [

                  'user'         => $user,

                  'dataProvider' => $dataProvider,

              ]);

          }

  

5014e10b   Yarik   test
248
          public function actionBlogList($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
249
250
251
252
253
254
255
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

42931736   Yarik   test
256
              $blog = new ActiveDataProvider([

38ffb9db   Yarik   test
257
                  'query'      => $user->getBlog(),

42931736   Yarik   test
258
                  'pagination' => new Pagination([

f0a961be   Yarik   test
259
                      'pageSize' => 1,

42931736   Yarik   test
260
                  ]),

38ffb9db   Yarik   test
261
                  'sort'       => new Sort([

42931736   Yarik   test
262
263
                      'defaultOrder' => [

                          'date_add' => SORT_DESC,

38ffb9db   Yarik   test
264
                          'name'     => SORT_ASC,

42931736   Yarik   test
265
266
                      ],

                  ]),

eb7e82fb   Administrator   29.02.16
267
268
269
              ]);

  

              return $this->render('blog-list', [

38ffb9db   Yarik   test
270
271
                  'user' => $user,

                  'blog' => $blog,

eb7e82fb   Administrator   29.02.16
272
273
274
              ]);

          }

  

5014e10b   Yarik   test
275
          public function actionBlogView($performer_id, $link, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
276
277
278
279
280
281
282
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

4ff3ca88   Yarik   test
283
284
285
286
287
              $article = Blog::find()

                             ->where([

                                 'link'    => $link,

                                 'user_id' => $performer_id,

                             ])

38a6e1dd   Yarik   test
288
289
                             ->with('comments')

                             ->one();

e82beebc   Yarik   test
290
291
292
              if(empty($article)) {

                  throw new NotFoundHttpException('Запись не найдена');

              }

eb7e82fb   Administrator   29.02.16
293
294
295
296
297
              $article->updateCounters([ 'view_count' => 1 ]);

  

              return $this->render('blog-view', [

                  'user'    => $user,

                  'article' => $article,

eb7e82fb   Administrator   29.02.16
298
299
300
              ]);

          }

  

5014e10b   Yarik   test
301
          public function actionReview($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
302
303
304
305
306
307
308
309
310
311
312
313
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

              return $this->render('review', [

                  'user' => $user,

              ]);

          }

  

5014e10b   Yarik   test
314
          public function actionWorkplace($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
315
          {

b4142e17   Yarik   test
316
317
318
319
              $user = User::find()

                          ->where([ 'id' => $performer_id ])

                          ->with('jobs')

                          ->one();

eb7e82fb   Administrator   29.02.16
320
321
322
323
324
325
326
327
328
              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

              return $this->render('workplace', [

                  'user' => $user,

              ]);

          }

  

5014e10b   Yarik   test
329
          public function actionGallery($performer_id, $type = 'implementer')

eb7e82fb   Administrator   29.02.16
330
331
332
333
334
335
336
          {

              $user = User::findOne($performer_id);

  

              if(!$user instanceof User) {

                  throw new BadRequestHttpException('Пользователь не найден');

              }

  

f0a961be   Yarik   test
337
              $gallery = new ActiveDataProvider([

38ffb9db   Yarik   test
338
                  'query'      => $user->getGalleries(),

f0a961be   Yarik   test
339
340
341
                  'pagination' => [

                      'pageSize' => 5,

                  ],

eb7e82fb   Administrator   29.02.16
342
343
344
345
346
347
348
              ]);

  

              $videos = Fields::getData($user->id, Gallery::className(), 'youtube');

  

              $this->layout = 'gallery';

  

              return $this->render('gallery', [

38ffb9db   Yarik   test
349
350
351
                  'user'    => $user,

                  'gallery' => $gallery,

                  'videos'  => $videos,

eb7e82fb   Administrator   29.02.16
352
353
              ]);

          }

5014e10b   Yarik   test
354
355
356
  

          public function beforeAction($action)

          {

5d627502   Yarik   test
357
358
              if(!empty( \Yii::$app->request->get('type') )) {

                  $action->controller->view->params[ 'type' ] = \Yii::$app->request->get('type');

5014e10b   Yarik   test
359
              }

38ffb9db   Yarik   test
360
              if(!empty( \Yii::$app->request->get('performer_id') )) {

f7b97c9e   Yarik   test
361
                  $user = User::findOne(\Yii::$app->request->get('performer_id'));

38ffb9db   Yarik   test
362
                  if(!empty( $user ) && $user->type == 2) {

f7b97c9e   Yarik   test
363
                      $queryParams = \Yii::$app->request->queryParams;

38ffb9db   Yarik   test
364
365
366
                      unset( $queryParams[ 'performer_id' ] );

                      $queryParams[ 'company_id' ] = $user->id;

                      return $this->redirect(array_merge([ 'company/' . $action->id ], $queryParams));

f7b97c9e   Yarik   test
367
368
                  }

              }

5014e10b   Yarik   test
369
370
              return parent::beforeAction($action);

          }

eb7e82fb   Administrator   29.02.16
371
      }