Blame view

frontend/controllers/CompanyController.php 13 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
214
              $article = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
                               ->all();
d36bdac6   Administrator   17.02.16
215
  
fa284ab0   Yarik   test
216
217
218
              $blog = new ArrayDataProvider([
                  'allModels' => $article,
              ]);
f6ea8941   Administrator   09.02.16
219
  
fa284ab0   Yarik   test
220
221
222
223
224
              return $this->render('blog-list', [
                  'company'    => $company,
                  'blog'       => $blog,
                  'pagination' => $pagination,
              ]);
d36bdac6   Administrator   17.02.16
225
226
          }
  
fa284ab0   Yarik   test
227
228
229
          public function actionBlogView($company_id, $link)
          {
              $company = User::findOne($company_id);
d36bdac6   Administrator   17.02.16
230
  
fa284ab0   Yarik   test
231
232
233
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
d36bdac6   Administrator   17.02.16
234
  
fa284ab0   Yarik   test
235
236
237
238
239
240
              $article = Blog::findOne([
                  'link'    => $link,
                  'user_id' => $company_id,
              ]);
              $article->view_count++;
              $article->save();
d36bdac6   Administrator   17.02.16
241
  
fa284ab0   Yarik   test
242
243
244
              return $this->render('blog-view', [
                  'company' => $company,
                  'article' => $article,
d36bdac6   Administrator   17.02.16
245
  
fa284ab0   Yarik   test
246
247
              ]);
          }
eb7e82fb   Administrator   29.02.16
248
  
fa284ab0   Yarik   test
249
250
251
          public function actionReview($company_id)
          {
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
252
  
fa284ab0   Yarik   test
253
254
255
              return $this->render('review', [
                  'company' => $company,
              ]);
eb7e82fb   Administrator   29.02.16
256
257
          }
  
fa284ab0   Yarik   test
258
259
          public function actionVacancyList($company_id)
          {
eb7e82fb   Administrator   29.02.16
260
  
fa284ab0   Yarik   test
261
              $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
262
  
fa284ab0   Yarik   test
263
264
265
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
eb7e82fb   Administrator   29.02.16
266
  
fa284ab0   Yarik   test
267
              $query = $company->getVacancies();
eb7e82fb   Administrator   29.02.16
268
  
fa284ab0   Yarik   test
269
              $countQuery = clone $query;
eb7e82fb   Administrator   29.02.16
270
  
fa284ab0   Yarik   test
271
272
273
274
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
eb7e82fb   Administrator   29.02.16
275
  
fa284ab0   Yarik   test
276
277
              $vacancy = $query->offset($pagination->offset)
                               ->limit($pagination->limit);
f6ea8941   Administrator   09.02.16
278
  
fa284ab0   Yarik   test
279
280
281
282
283
284
285
286
287
288
              $provider = new ActiveDataProvider([
                  'query'      => $vacancy,
                  'pagination' => false,
                  'sort'       => [
                      'defaultOrder' => [
                          'date_add' => SORT_DESC,
                          'name'     => SORT_ASC,
                      ],
                  ],
              ]);
eb7e82fb   Administrator   29.02.16
289
  
fa284ab0   Yarik   test
290
291
292
293
294
              return $this->render('vacancy-list', [
                  'company'    => $company,
                  'provider'   => $provider,
                  'pagination' => $pagination,
              ]);
eb7e82fb   Administrator   29.02.16
295
  
fa284ab0   Yarik   test
296
          }
eb7e82fb   Administrator   29.02.16
297
  
fa284ab0   Yarik   test
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
326
327
328
329
330
331
332
333
334
335
336
337
          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
338
  
fa284ab0   Yarik   test
339
340
341
          public function actionGallery($company_id)
          {
              $company = User::findOne($company_id);
f6ea8941   Administrator   09.02.16
342
  
fa284ab0   Yarik   test
343
344
345
              if(!$company instanceof User) {
                  throw new BadRequestHttpException('Пользователь не найден');
              }
cda2c1c9   Administrator   add yii jquery
346
  
fa284ab0   Yarik   test
347
348
              $query = Gallery::find()
                              ->where([ 'user_id' => $company_id ]);
cda2c1c9   Administrator   add yii jquery
349
  
fa284ab0   Yarik   test
350
              $countQuery = clone $query;
cda2c1c9   Administrator   add yii jquery
351
  
fa284ab0   Yarik   test
352
353
354
355
              $pagination = new Pagination([
                  'totalCount' => $countQuery->count(),
                  'pageSize'   => 5,
              ]);
cda2c1c9   Administrator   add yii jquery
356
  
fa284ab0   Yarik   test
357
358
359
              $gallery = $query->offset($pagination->offset)
                               ->limit($pagination->limit)
                               ->all();
cda2c1c9   Administrator   add yii jquery
360
  
fa284ab0   Yarik   test
361
362
363
              $gallery = new ArrayDataProvider([
                  'allModels' => $gallery,
              ]);
fbdb1f1c   Yarik   test
364
  
fa284ab0   Yarik   test
365
              $videos = Fields::getData($company->id, Gallery::className(), 'youtube');
d36bdac6   Administrator   17.02.16
366
  
fa284ab0   Yarik   test
367
              $this->layout = 'gallery-company';
f6ea8941   Administrator   09.02.16
368
  
fa284ab0   Yarik   test
369
370
371
372
373
374
              return $this->render('gallery', [
                  'company'    => $company,
                  'gallery'    => $gallery,
                  'pagination' => $pagination,
                  'videos'     => $videos,
              ]);
d36bdac6   Administrator   17.02.16
375
          }
fbdb1f1c   Yarik   test
376
      }