Blame view

frontend/controllers/CompanyController.php 13.2 KB
fbdb1f1c   Yarik   test
1
  <?php
fa284ab0   Yarik   test
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
      namespace frontend\controllers;
  
      use common\models\Blog;
      use common\models\Fields;
      use common\models\Gallery;
      use common\models\Portfolio;
      use common\models\PortfolioSpecialization;
      use common\models\Team;
      use common\models\Vacancy;
      use common\models\VacancySpecialization;
      use Yii;
      use yii\data\ActiveDataProvider;
      use yii\data\ArrayDataProvider;
      use yii\data\Pagination;
      use yii\helpers\ArrayHelper;
      use yii\web\BadRequestHttpException;
      use yii\web\Controller;
      use common\models\User;
fbdb1f1c   Yarik   test
20
21
  
      /**
fa284ab0   Yarik   test
22
       * Site controller
fbdb1f1c   Yarik   test
23
       */
fa284ab0   Yarik   test
24
      class CompanyController extends Controller
fbdb1f1c   Yarik   test
25
      {
fbdb1f1c   Yarik   test
26
  
fa284ab0   Yarik   test
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
          public $layout = 'company';
  
          public $defaultAction = 'common';
  
          /**
           * @inheritdoc
           */
          public function actions()
          {
              return [
                  'error'   => [
                      'class' => 'yii\web\ErrorAction',
                  ],
                  'captcha' => [
                      'class'           => 'yii\captcha\CaptchaAction',
                      'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : NULL,
                  ],
              ];
d36bdac6   Administrator   17.02.16
45
          }
d36bdac6   Administrator   17.02.16
46
  
fa284ab0   Yarik   test
47
48
49
          public function actionIndex()
          {
              $this->redirect('site/index');
d36bdac6   Administrator   17.02.16
50
          }
d36bdac6   Administrator   17.02.16
51
  
fa284ab0   Yarik   test
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
          public function actionCommon($company_id)
          {
              $company = User::findOne($company_id);
  
              $educations = Fields::getData($company->id, $company->className(), 'education');
              $phones = Fields::getData($company->id, $company->className(), 'phone');
              $sites = Fields::getData($company->id, $company->className(), 'site');
              $soft = implode(', ', ArrayHelper::getColumn(Fields::getData($company->id, $company->className(), 'soft'), 'soft'));
  
              return $this->render('common', [
                  'company'    => $company,
                  'educations' => $educations,
                  'phones'     => $phones,
                  'sites'      => $sites,
                  'soft'       => $soft,
              ]);
          }
d36bdac6   Administrator   17.02.16
69
  
fa284ab0   Yarik   test
70
71
72
73
74
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
          public function actionPortfolio($company_id)
          {
              $company = User::findOne($company_id);
  
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
              $projects = ArrayHelper::getColumn($company->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([
                  'allModels'  => $company->getPortfolios()
                                          ->orderBy('portfolio_id')
                                          ->all(),
                  'pagination' => [
                      'pageSize' => 9,
                  ],
              ]);
  
              return $this->render('portfolio', [
                  'company'   => $company,
                  'filters'   => $filters,
                  'portfolio' => $portfolio,
                  'count'     => count($company->portfolios),
              ]);
d36bdac6   Administrator   17.02.16
103
104
          }
  
fa284ab0   Yarik   test
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
          public function actionPortfolioFilter($performer_id, $filter)
          {
              $company = User::findOne($performer_id);
  
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
              $portfolios = ArrayHelper::getColumn($company->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', [
                  'company'   => $company,
                  'filters'   => $filters,
                  'portfolio' => $portfolio,
                  'filter_id' => $filter,
                  'count'     => count($company->portfolios),
              ]);
          }
d36bdac6   Administrator   17.02.16
147
  
fa284ab0   Yarik   test
148
149
150
151
152
153
154
155
156
157
158
159
          public function actionPortfolioView($company_id, $portfolio_id)
          {
              $user = User::findOne($company_id);
              $portfolio = $user->getPortfolios()
                                ->where([ 'portfolio_id' => $portfolio_id ])
                                ->one();
              $portfolio->updateCounters([ 'view_count' => 1 ]);
              return $this->render('portfolio-view', [
                  'user'      => $user,
                  'portfolio' => $portfolio,
              ]);
          }
d36bdac6   Administrator   17.02.16
160
  
fa284ab0   Yarik   test
161
162
163
          public function actionTeam($company_id)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
164
  
fa284ab0   Yarik   test
165
166
167
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
168
  
fa284ab0   Yarik   test
169
170
              $query = Team::find()
                           ->where([ 'user_id' => $company_id ]);
d36bdac6   Administrator   17.02.16
171
  
fa284ab0   Yarik   test
172
              $countQuery = clone $query;
d36bdac6   Administrator   17.02.16
173
  
fa284ab0   Yarik   test
174
175
176
177
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 9,
              ]);
d36bdac6   Administrator   17.02.16
178
  
fa284ab0   Yarik   test
179
180
181
              $team = $query->offset($pagination->offset)
                            ->limit($pagination->limit)
                            ->all();
fbdb1f1c   Yarik   test
182
  
fa284ab0   Yarik   test
183
184
185
              $team = new ArrayDataProvider([
                  'allModels' => $team,
              ]);
f6ea8941   Administrator   09.02.16
186
  
fa284ab0   Yarik   test
187
188
189
190
191
              return $this->render('team', [
                  'company'    => $company,
                  'team'       => $team,
                  'pagination' => $pagination,
              ]);
d36bdac6   Administrator   17.02.16
192
193
          }
  
fa284ab0   Yarik   test
194
195
196
          public function actionBlogList($company_id)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
197
  
fa284ab0   Yarik   test
198
199
200
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
201
  
fa284ab0   Yarik   test
202
203
              $query = Blog::find()
                           ->where([ 'user_id' => $company_id ]);
d36bdac6   Administrator   17.02.16
204
  
fa284ab0   Yarik   test
205
              $countQuery = clone $query;
d36bdac6   Administrator   17.02.16
206
  
fa284ab0   Yarik   test
207
208
209
210
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
d36bdac6   Administrator   17.02.16
211
  
fa284ab0   Yarik   test
212
213
              $article = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
4ff3ca88   Yarik   test
214
                               ->with('comments')
fa284ab0   Yarik   test
215
                               ->all();
d36bdac6   Administrator   17.02.16
216
  
fa284ab0   Yarik   test
217
218
219
              $blog = new ArrayDataProvider([
                  'allModels' => $article,
              ]);
f6ea8941   Administrator   09.02.16
220
  
fa284ab0   Yarik   test
221
222
223
224
225
              return $this->render('blog-list', [
                  'company'    => $company,
                  'blog'       => $blog,
                  'pagination' => $pagination,
              ]);
d36bdac6   Administrator   17.02.16
226
227
          }
  
fa284ab0   Yarik   test
228
229
230
          public function actionBlogView($company_id, $link)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
231
  
fa284ab0   Yarik   test
232
233
234
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
235
  
4ff3ca88   Yarik   test
236
237
238
239
240
241
242
243
              $article = Blog::find()
                             ->where([
                                 'link'    => $link,
                                 'user_id' => $company_id,
                             ])
                             ->with('comments')
                             ->one();
              $article->updateCounters([ 'view_count' => 1 ]);
d36bdac6   Administrator   17.02.16
244
  
fa284ab0   Yarik   test
245
246
247
              return $this->render('blog-view', [
                  'company' => $company,
                  'article' => $article,
d36bdac6   Administrator   17.02.16
248
  
fa284ab0   Yarik   test
249
250
              ]);
          }
eb7e82fb   Administrator   29.02.16
251
  
fa284ab0   Yarik   test
252
253
254
          public function actionReview($company_id)
          {
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
255
  
fa284ab0   Yarik   test
256
257
258
              return $this->render('review', [
                  'company' => $company,
              ]);
eb7e82fb   Administrator   29.02.16
259
260
          }
  
fa284ab0   Yarik   test
261
262
          public function actionVacancyList($company_id)
          {
eb7e82fb   Administrator   29.02.16
263
  
fa284ab0   Yarik   test
264
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
265
  
fa284ab0   Yarik   test
266
267
268
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
eb7e82fb   Administrator   29.02.16
269
  
fa284ab0   Yarik   test
270
              $query = $company->getVacancies();
eb7e82fb   Administrator   29.02.16
271
  
fa284ab0   Yarik   test
272
              $countQuery = clone $query;
eb7e82fb   Administrator   29.02.16
273
  
fa284ab0   Yarik   test
274
275
276
277
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
eb7e82fb   Administrator   29.02.16
278
  
fa284ab0   Yarik   test
279
280
              $vacancy = $query->offset($pagination->offset)
                               ->limit($pagination->limit);
f6ea8941   Administrator   09.02.16
281
  
fa284ab0   Yarik   test
282
283
284
285
286
287
288
289
290
291
              $provider = new ActiveDataProvider([
                  'query'      => $vacancy,
                  'pagination' => false,
                  'sort'       => [
                      'defaultOrder' => [
                          'date_add' => SORT_DESC,
                          'name'     => SORT_ASC,
                      ],
                  ],
              ]);
eb7e82fb   Administrator   29.02.16
292
  
fa284ab0   Yarik   test
293
294
295
296
297
              return $this->render('vacancy-list', [
                  'company'    => $company,
                  'provider'   => $provider,
                  'pagination' => $pagination,
              ]);
eb7e82fb   Administrator   29.02.16
298
  
fa284ab0   Yarik   test
299
          }
eb7e82fb   Administrator   29.02.16
300
  
fa284ab0   Yarik   test
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
          public function actionVacancyView($company_id, $link)
          {
              $company = User::findOne($company_id);
              $vacancy = $company->getVacancies()
                                 ->where([ 'link' => $link ])
                                 ->with([
                                     'employments',
                                     'specializations',
                                 ])
                                 ->one();
  
              $specialization_id = $vacancy->getSpecializations()
                                           ->select('specialization_id')
                                           ->column();
  
              $vacancy_id = VacancySpecialization::find()
                                                 ->where([ 'specialization_id' => $specialization_id ])
                                                 ->select('vacancy_id')
                                                 ->column();
  
              $similar_vacancies = Vacancy::find()
                                          ->where([
                                              'city'       => $vacancy->city,
                                              'vacancy_id' => $vacancy_id,
                                          ])
                                          ->andFilterWhere([
                                              '<>',
                                              'vacancy_id',
                                              $vacancy->vacancy_id,
                                          ])
                                          ->orderBy([ 'vacancy_id' => SORT_DESC ])
                                          ->limit(3)
                                          ->all();
  
              return $this->render('vacancy-view', [
                  'company'           => $company,
                  'vacancy'           => $vacancy,
                  'similar_vacancies' => $similar_vacancies,
              ]);
          }
fbdb1f1c   Yarik   test
341
  
fa284ab0   Yarik   test
342
343
344
          public function actionGallery($company_id)
          {
              $company = User::findOne($company_id);
f6ea8941   Administrator   09.02.16
345
  
fa284ab0   Yarik   test
346
347
348
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
cda2c1c9   Administrator   add yii jquery
349
  
fa284ab0   Yarik   test
350
351
              $query = Gallery::find()
                              ->where([ 'user_id' => $company_id ]);
cda2c1c9   Administrator   add yii jquery
352
  
fa284ab0   Yarik   test
353
              $countQuery = clone $query;
cda2c1c9   Administrator   add yii jquery
354
  
fa284ab0   Yarik   test
355
356
357
358
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
cda2c1c9   Administrator   add yii jquery
359
  
fa284ab0   Yarik   test
360
361
362
              $gallery = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
                               ->all();
cda2c1c9   Administrator   add yii jquery
363
  
fa284ab0   Yarik   test
364
365
366
              $gallery = new ArrayDataProvider([
                  'allModels' => $gallery,
              ]);
fbdb1f1c   Yarik   test
367
  
fa284ab0   Yarik   test
368
              $videos = Fields::getData($company->id, Gallery::className(), 'youtube');
d36bdac6   Administrator   17.02.16
369
  
fa284ab0   Yarik   test
370
              $this->layout = 'gallery-company';
f6ea8941   Administrator   09.02.16
371
  
fa284ab0   Yarik   test
372
373
374
375
376
377
              return $this->render('gallery', [
                  'company'    => $company,
                  'gallery'    => $gallery,
                  'pagination' => $pagination,
                  'videos'     => $videos,
              ]);
d36bdac6   Administrator   17.02.16
378
          }
fbdb1f1c   Yarik   test
379
      }