Blame view

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