Blame view

frontend/controllers/CompanyController.php 8.28 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
81
82
83
84
85
86
          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->portfolios,
              '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
      }
  
1f651082   Yarik   test
130
131
132
133
134
135
136
      public function actionPortfolioView($company_id /*, $portfolio_id*/)
      {
          $company = User::findOne($company_id);
  
          return $this->render('portfolio-view', ['company' => $company]);
      }
  
f6ea8941   Administrator   09.02.16
137
      public function actionTeam($company_id)
fbdb1f1c   Yarik   test
138
      {
f6ea8941   Administrator   09.02.16
139
140
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
          $query = Team::find(['user_id'=>$company_id]);
  
          $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
163
          return $this->render('team',[
d36bdac6   Administrator   17.02.16
164
165
166
              'company' => $company,
              'team' => $team,
              'pagination' => $pagination
f6ea8941   Administrator   09.02.16
167
          ]);
fbdb1f1c   Yarik   test
168
169
      }
  
f6ea8941   Administrator   09.02.16
170
      public function actionBlogList($company_id)
fbdb1f1c   Yarik   test
171
      {
f6ea8941   Administrator   09.02.16
172
173
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
          $query = Blog::find(['user_id'=>$company_id]);
  
          $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
196
          return $this->render('blog-list',[
d36bdac6   Administrator   17.02.16
197
198
199
              'company' => $company,
              'blog' => $blog,
              'pagination' => $pagination
f6ea8941   Administrator   09.02.16
200
          ]);
fbdb1f1c   Yarik   test
201
202
      }
  
d36bdac6   Administrator   17.02.16
203
204
  
      public function actionBlogView($company_id, $link)
fbdb1f1c   Yarik   test
205
      {
f6ea8941   Administrator   09.02.16
206
207
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
208
209
210
211
212
213
214
215
216
217
          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
218
          return $this->render('blog-view',[
d36bdac6   Administrator   17.02.16
219
220
221
              'company' => $company,
              'article' =>$article,
  
f6ea8941   Administrator   09.02.16
222
          ]);
fbdb1f1c   Yarik   test
223
224
      }
  
f6ea8941   Administrator   09.02.16
225
      public function actionReview($company_id)
fbdb1f1c   Yarik   test
226
      {
f6ea8941   Administrator   09.02.16
227
228
229
230
231
          $company = User::findOne($company_id);
  
          return $this->render('review',[
              'company' => $company
          ]);
fbdb1f1c   Yarik   test
232
233
      }
  
f6ea8941   Administrator   09.02.16
234
      public function actionVacancyList($company_id)
fbdb1f1c   Yarik   test
235
      {
f6ea8941   Administrator   09.02.16
236
          $company = User::findOne($company_id);
f389cee6   Yarik   test
237
238
239
240
241
242
243
244
245
246
247
248
249
          $query = $company->getVacancies();
          $provider = new ActiveDataProvider([
              'query' => $query,
              'pagination' => [
                  'pageSize' => 2,
              ],
              'sort' => [
                  'defaultOrder' => [
                      'date_add' => SORT_DESC,
                      'name' => SORT_ASC,
                  ]
              ],
          ]);
f6ea8941   Administrator   09.02.16
250
251
  
          return $this->render('vacancy-list',[
f389cee6   Yarik   test
252
253
              'company' => $company,
              'provider' => $provider,
f6ea8941   Administrator   09.02.16
254
          ]);
fbdb1f1c   Yarik   test
255
256
      }
  
f6ea8941   Administrator   09.02.16
257
      public function actionVacancyView($company_id, $vacancy_id)
fbdb1f1c   Yarik   test
258
      {
f6ea8941   Administrator   09.02.16
259
          $company = User::findOne($company_id);
f389cee6   Yarik   test
260
          $vacancy = $company->getVacancies()->where(['vacancy_id' => $vacancy_id])->with(['employments'])->one();
f6ea8941   Administrator   09.02.16
261
262
  
          return $this->render('vacancy-view',[
f389cee6   Yarik   test
263
264
              'company' => $company,
              'vacancy' => $vacancy,
f6ea8941   Administrator   09.02.16
265
          ]);
fbdb1f1c   Yarik   test
266
267
      }
  
d36bdac6   Administrator   17.02.16
268
  
f6ea8941   Administrator   09.02.16
269
      public function actionGallery($company_id)
fbdb1f1c   Yarik   test
270
      {
f6ea8941   Administrator   09.02.16
271
272
          $company = User::findOne($company_id);
  
d36bdac6   Administrator   17.02.16
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
          if(!$company instanceof User){
              throw new BadRequestHttpException('Пользователь не найден');
          }
  
  
          $query = Gallery::find(['user_id'=>$company_id]);
  
          $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
296
          $this->layout = 'gallery-company';
d36bdac6   Administrator   17.02.16
297
  
f6ea8941   Administrator   09.02.16
298
          return $this->render('gallery',[
d36bdac6   Administrator   17.02.16
299
300
301
302
              'company' => $company,
              'gallery' =>$gallery,
              'pagination' => $pagination,
              'videos' => $videos
f6ea8941   Administrator   09.02.16
303
          ]);
fbdb1f1c   Yarik   test
304
305
      }
  }