Blame view

frontend/controllers/CompanyController.php 12.8 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);
fa284ab0   Yarik   test
164
165
166
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
a020aad3   Yarik   test
167
168
169
170
171
172
              $comments = new ActiveDataProvider([
                  'query' => $company->getComments(),
                  'pagination' => [
                      'pageSize' => 4
                  ],
              ]);
fa284ab0   Yarik   test
173
174
              $query = Team::find()
                           ->where([ 'user_id' => $company_id ]);
a020aad3   Yarik   test
175
176
177
178
179
              $team = new ActiveDataProvider([
                  'query'      => $query,
                  'pagination' => [
                      'pageSize' => 9,
                  ],
fa284ab0   Yarik   test
180
              ]);
fa284ab0   Yarik   test
181
              return $this->render('team', [
a020aad3   Yarik   test
182
183
184
                  'company'  => $company,
                  'team'     => $team,
                  'comments' => $comments,
fa284ab0   Yarik   test
185
              ]);
d36bdac6   Administrator   17.02.16
186
187
          }
  
fa284ab0   Yarik   test
188
189
190
          public function actionBlogList($company_id)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
191
  
fa284ab0   Yarik   test
192
193
194
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
195
  
fa284ab0   Yarik   test
196
197
              $query = Blog::find()
                           ->where([ 'user_id' => $company_id ]);
d36bdac6   Administrator   17.02.16
198
  
fa284ab0   Yarik   test
199
              $countQuery = clone $query;
d36bdac6   Administrator   17.02.16
200
  
fa284ab0   Yarik   test
201
202
203
204
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
d36bdac6   Administrator   17.02.16
205
  
fa284ab0   Yarik   test
206
207
              $article = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
4ff3ca88   Yarik   test
208
                               ->with('comments')
fa284ab0   Yarik   test
209
                               ->all();
d36bdac6   Administrator   17.02.16
210
  
fa284ab0   Yarik   test
211
212
213
              $blog = new ArrayDataProvider([
                  'allModels' => $article,
              ]);
f6ea8941   Administrator   09.02.16
214
  
fa284ab0   Yarik   test
215
216
217
218
219
              return $this->render('blog-list', [
                  'company'    => $company,
                  'blog'       => $blog,
                  'pagination' => $pagination,
              ]);
d36bdac6   Administrator   17.02.16
220
221
          }
  
fa284ab0   Yarik   test
222
223
224
          public function actionBlogView($company_id, $link)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
225
  
fa284ab0   Yarik   test
226
227
228
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
229
  
4ff3ca88   Yarik   test
230
231
232
233
234
235
236
237
              $article = Blog::find()
                             ->where([
                                 'link'    => $link,
                                 'user_id' => $company_id,
                             ])
                             ->with('comments')
                             ->one();
              $article->updateCounters([ 'view_count' => 1 ]);
d36bdac6   Administrator   17.02.16
238
  
fa284ab0   Yarik   test
239
240
241
              return $this->render('blog-view', [
                  'company' => $company,
                  'article' => $article,
d36bdac6   Administrator   17.02.16
242
  
fa284ab0   Yarik   test
243
244
              ]);
          }
eb7e82fb   Administrator   29.02.16
245
  
fa284ab0   Yarik   test
246
247
248
          public function actionReview($company_id)
          {
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
249
  
fa284ab0   Yarik   test
250
251
252
              return $this->render('review', [
                  'company' => $company,
              ]);
eb7e82fb   Administrator   29.02.16
253
254
          }
  
fa284ab0   Yarik   test
255
256
          public function actionVacancyList($company_id)
          {
eb7e82fb   Administrator   29.02.16
257
  
fa284ab0   Yarik   test
258
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
259
  
fa284ab0   Yarik   test
260
261
262
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
eb7e82fb   Administrator   29.02.16
263
  
fa284ab0   Yarik   test
264
              $query = $company->getVacancies();
eb7e82fb   Administrator   29.02.16
265
  
fa284ab0   Yarik   test
266
              $provider = new ActiveDataProvider([
a020aad3   Yarik   test
267
268
269
270
                  'query'      => $query,
                  'pagination' => [
                      'pageSize' => 5,
                  ],
fa284ab0   Yarik   test
271
272
273
274
275
276
277
                  'sort'       => [
                      'defaultOrder' => [
                          'date_add' => SORT_DESC,
                          'name'     => SORT_ASC,
                      ],
                  ],
              ]);
eb7e82fb   Administrator   29.02.16
278
  
fa284ab0   Yarik   test
279
              return $this->render('vacancy-list', [
a020aad3   Yarik   test
280
281
                  'company'  => $company,
                  'provider' => $provider,
fa284ab0   Yarik   test
282
              ]);
eb7e82fb   Administrator   29.02.16
283
  
fa284ab0   Yarik   test
284
          }
eb7e82fb   Administrator   29.02.16
285
  
fa284ab0   Yarik   test
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
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
          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
326
  
fa284ab0   Yarik   test
327
328
329
          public function actionGallery($company_id)
          {
              $company = User::findOne($company_id);
f6ea8941   Administrator   09.02.16
330
  
fa284ab0   Yarik   test
331
332
333
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
cda2c1c9   Administrator   add yii jquery
334
  
fa284ab0   Yarik   test
335
336
              $query = Gallery::find()
                              ->where([ 'user_id' => $company_id ]);
cda2c1c9   Administrator   add yii jquery
337
  
fa284ab0   Yarik   test
338
              $countQuery = clone $query;
cda2c1c9   Administrator   add yii jquery
339
  
fa284ab0   Yarik   test
340
341
342
343
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
cda2c1c9   Administrator   add yii jquery
344
  
fa284ab0   Yarik   test
345
346
347
              $gallery = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
                               ->all();
cda2c1c9   Administrator   add yii jquery
348
  
fa284ab0   Yarik   test
349
350
351
              $gallery = new ArrayDataProvider([
                  'allModels' => $gallery,
              ]);
fbdb1f1c   Yarik   test
352
  
fa284ab0   Yarik   test
353
              $videos = Fields::getData($company->id, Gallery::className(), 'youtube');
d36bdac6   Administrator   17.02.16
354
  
fa284ab0   Yarik   test
355
              $this->layout = 'gallery-company';
f6ea8941   Administrator   09.02.16
356
  
fa284ab0   Yarik   test
357
358
359
360
361
362
              return $this->render('gallery', [
                  'company'    => $company,
                  'gallery'    => $gallery,
                  'pagination' => $pagination,
                  'videos'     => $videos,
              ]);
d36bdac6   Administrator   17.02.16
363
          }
fbdb1f1c   Yarik   test
364
      }