Blame view

frontend/controllers/CompanyController.php 9.62 KB
fbdb1f1c   Yarik   test
1
2
3
  <?php
  namespace frontend\controllers;
  
d36bdac6   Administrator   17.02.16
4
5
  
  use common\models\Blog;
f6ea8941   Administrator   09.02.16
6
  use common\models\Fields;
d36bdac6   Administrator   17.02.16
7
8
9
10
  use common\models\Gallery;
  use common\models\Portfolio;
  use common\models\PortfolioSpecialization;
  use common\models\Team;
cda2c1c9   Administrator   add yii jquery
11
12
  use common\models\Vacancy;
  use common\models\VacancySpecialization;
fbdb1f1c   Yarik   test
13
  use Yii;
f389cee6   Yarik   test
14
  use yii\data\ActiveDataProvider;
d36bdac6   Administrator   17.02.16
15
16
  use yii\data\ArrayDataProvider;
  use yii\data\Pagination;
f6ea8941   Administrator   09.02.16
17
  use yii\helpers\ArrayHelper;
fbdb1f1c   Yarik   test
18
19
  use yii\web\BadRequestHttpException;
  use yii\web\Controller;
fbdb1f1c   Yarik   test
20
  use common\models\User;
fbdb1f1c   Yarik   test
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
  /**
   * Site controller
   */
  class CompanyController extends Controller
  {
      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,
              ],
          ];
      }
  
      public function actionIndex()
      {
f6ea8941   Administrator   09.02.16
48
          $this->redirect('site/index');
fbdb1f1c   Yarik   test
49
50
      }
  
f6ea8941   Administrator   09.02.16
51
      public function actionCommon($company_id)
fbdb1f1c   Yarik   test
52
      {
f6ea8941   Administrator   09.02.16
53
54
55
56
57
58
59
60
61
62
63
64
65
66
          $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
          ]);
fbdb1f1c   Yarik   test
67
68
      }
  
f6ea8941   Administrator   09.02.16
69
      public function actionPortfolio($company_id)
fbdb1f1c   Yarik   test
70
      {
f6ea8941   Administrator   09.02.16
71
72
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
73
74
75
76
77
78
79
80
81
82
          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([
eb7e82fb   Administrator   29.02.16
83
              'allModels' => $company->getPortfolios()->orderBy('portfolio_id')->all(),
d36bdac6   Administrator   17.02.16
84
85
86
87
88
              'pagination' => [
                  'pageSize' => 9,
              ],
          ]);
  
f6ea8941   Administrator   09.02.16
89
          return $this->render('portfolio',[
d36bdac6   Administrator   17.02.16
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
120
121
122
123
124
125
126
127
128
              'company' => $company,
              'filters' => $filters,
              'portfolio' => $portfolio,
              'count' => count($company->portfolios)
          ]);
      }
  
      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)
f6ea8941   Administrator   09.02.16
129
          ]);
fbdb1f1c   Yarik   test
130
131
      }
  
eb7e82fb   Administrator   29.02.16
132
      public function actionPortfolioView($company_id , $portfolio_id)
1f651082   Yarik   test
133
      {
eb7e82fb   Administrator   29.02.16
134
135
136
137
138
139
140
141
142
          $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,
          ]);
1f651082   Yarik   test
143
144
      }
  
f6ea8941   Administrator   09.02.16
145
      public function actionTeam($company_id)
fbdb1f1c   Yarik   test
146
      {
f6ea8941   Administrator   09.02.16
147
148
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
149
150
151
152
153
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
815bfc72   Administrator   01.03.16
154
          $query = Team::find()->where(['user_id'=>$company_id]);
d36bdac6   Administrator   17.02.16
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
  
          $countQuery = clone $query;
  
          $pagination = new Pagination(['totalCount' => $countQuery->count(),
              'pageSize' => 9,
          ]);
  
          $team = $query->offset($pagination->offset)
              ->limit($pagination->limit)
              ->all();
  
          $team = new ArrayDataProvider([
              'allModels' => $team,
          ]);
  
  
f6ea8941   Administrator   09.02.16
171
          return $this->render('team',[
d36bdac6   Administrator   17.02.16
172
173
174
              'company' => $company,
              'team' => $team,
              'pagination' => $pagination
f6ea8941   Administrator   09.02.16
175
          ]);
fbdb1f1c   Yarik   test
176
177
      }
  
f6ea8941   Administrator   09.02.16
178
      public function actionBlogList($company_id)
fbdb1f1c   Yarik   test
179
      {
f6ea8941   Administrator   09.02.16
180
181
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
182
183
184
185
186
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
a942071d   Administrator   01.03.16
187
          $query = Blog::find()->where(['user_id'=>$company_id]);
d36bdac6   Administrator   17.02.16
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
  
          $countQuery = clone $query;
  
          $pagination = new Pagination(['totalCount' => $countQuery->count(),
              'pageSize' => 5,
          ]);
  
          $article = $query->offset($pagination->offset)
              ->limit($pagination->limit)
              ->all();
  
          $blog = new ArrayDataProvider([
              'allModels' => $article,
          ]);
  
  
f6ea8941   Administrator   09.02.16
204
          return $this->render('blog-list',[
d36bdac6   Administrator   17.02.16
205
206
207
              'company' => $company,
              'blog' => $blog,
              'pagination' => $pagination
f6ea8941   Administrator   09.02.16
208
          ]);
fbdb1f1c   Yarik   test
209
210
      }
  
d36bdac6   Administrator   17.02.16
211
212
  
      public function actionBlogView($company_id, $link)
fbdb1f1c   Yarik   test
213
      {
f6ea8941   Administrator   09.02.16
214
215
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
216
217
218
219
220
221
222
223
224
225
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
          $article = Blog::findOne(['link'=>$link,'user_id'=>$company_id]);
          $article->view_count ++;
          $article->save();
  
  
f6ea8941   Administrator   09.02.16
226
          return $this->render('blog-view',[
d36bdac6   Administrator   17.02.16
227
228
229
              'company' => $company,
              'article' =>$article,
  
f6ea8941   Administrator   09.02.16
230
          ]);
fbdb1f1c   Yarik   test
231
232
      }
  
f6ea8941   Administrator   09.02.16
233
      public function actionReview($company_id)
fbdb1f1c   Yarik   test
234
      {
f6ea8941   Administrator   09.02.16
235
236
237
238
239
          $company = User::findOne($company_id);
  
          return $this->render('review',[
              'company' => $company
          ]);
fbdb1f1c   Yarik   test
240
241
      }
  
f6ea8941   Administrator   09.02.16
242
      public function actionVacancyList($company_id)
fbdb1f1c   Yarik   test
243
      {
eb7e82fb   Administrator   29.02.16
244
  
f6ea8941   Administrator   09.02.16
245
          $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
246
247
248
249
250
251
  
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
f389cee6   Yarik   test
252
          $query = $company->getVacancies();
eb7e82fb   Administrator   29.02.16
253
254
255
256
257
258
259
260
261
262
263
  
          $countQuery = clone $query;
  
          $pagination = new Pagination(['totalCount' => $countQuery->count(),
              'pageSize' => 5,
          ]);
  
          $vacancy = $query->offset($pagination->offset)
              ->limit($pagination->limit);
  
  
f389cee6   Yarik   test
264
          $provider = new ActiveDataProvider([
eb7e82fb   Administrator   29.02.16
265
266
              'query' => $vacancy,
              'pagination' => false,
f389cee6   Yarik   test
267
268
269
270
271
272
273
              'sort' => [
                  'defaultOrder' => [
                      'date_add' => SORT_DESC,
                      'name' => SORT_ASC,
                  ]
              ],
          ]);
f6ea8941   Administrator   09.02.16
274
  
eb7e82fb   Administrator   29.02.16
275
276
  
  
f6ea8941   Administrator   09.02.16
277
          return $this->render('vacancy-list',[
f389cee6   Yarik   test
278
279
              'company' => $company,
              'provider' => $provider,
eb7e82fb   Administrator   29.02.16
280
              'pagination' => $pagination
f6ea8941   Administrator   09.02.16
281
          ]);
eb7e82fb   Administrator   29.02.16
282
  
fbdb1f1c   Yarik   test
283
284
      }
  
eb7e82fb   Administrator   29.02.16
285
      public function actionVacancyView($company_id, $link)
fbdb1f1c   Yarik   test
286
      {
f6ea8941   Administrator   09.02.16
287
          $company = User::findOne($company_id);
eb7e82fb   Administrator   29.02.16
288
          $vacancy = $company->getVacancies()->where(['link' => $link])->with(['employments'])->one();
f6ea8941   Administrator   09.02.16
289
  
cda2c1c9   Administrator   add yii jquery
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
  
          $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
              ])->limit(3)
              ->all();
  
f6ea8941   Administrator   09.02.16
308
          return $this->render('vacancy-view',[
f389cee6   Yarik   test
309
310
              'company' => $company,
              'vacancy' => $vacancy,
cda2c1c9   Administrator   add yii jquery
311
              'similar_vacancies' => $similar_vacancies
f6ea8941   Administrator   09.02.16
312
          ]);
fbdb1f1c   Yarik   test
313
314
      }
  
d36bdac6   Administrator   17.02.16
315
  
f6ea8941   Administrator   09.02.16
316
      public function actionGallery($company_id)
fbdb1f1c   Yarik   test
317
      {
f6ea8941   Administrator   09.02.16
318
319
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
320
321
322
323
324
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
ac9a2bf6   Administrator   01.03.16
325
          $query = Gallery::find()->where(['user_id'=>$company_id]);
d36bdac6   Administrator   17.02.16
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
  
          $countQuery = clone $query;
  
          $pagination = new Pagination(['totalCount' => $countQuery->count(),
              'pageSize' => 5,
          ]);
  
          $gallery = $query->offset($pagination->offset)
              ->limit($pagination->limit)
              ->all();
  
          $gallery = new ArrayDataProvider([
              'allModels' => $gallery,
          ]);
  
          $videos = Fields::getData($company->id,Gallery::className(),'youtube');
  
fbdb1f1c   Yarik   test
343
          $this->layout = 'gallery-company';
d36bdac6   Administrator   17.02.16
344
  
f6ea8941   Administrator   09.02.16
345
          return $this->render('gallery',[
d36bdac6   Administrator   17.02.16
346
347
348
349
              'company' => $company,
              'gallery' =>$gallery,
              'pagination' => $pagination,
              'videos' => $videos
f6ea8941   Administrator   09.02.16
350
          ]);
fbdb1f1c   Yarik   test
351
352
      }
  }