PerformerController.php 4.9 KB
<?php
namespace frontend\controllers;

use common\models\Blog;
use common\models\Fields;
use common\models\Gallery;
use Yii;
use yii\data\ArrayDataProvider;
use yii\data\Pagination;
use yii\helpers\ArrayHelper;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use common\models\User;



/**
 * Site controller
 */
class PerformerController extends Controller
{
    public $layout = 'performer';
    public $user;




    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }


    public function actionIndex()
    {
        $this->redirect('site/index');

    }

    public function actionCommon($performer_id)
    {

        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }

        $educations = Fields::getData($user->id,$user->className(),'education');
        $phones = Fields::getData($user->id,$user->className(),'phone');
        $sites = Fields::getData($user->id,$user->className(),'site');
        $soft = implode(', ',ArrayHelper::getColumn(Fields::getData($user->id,$user->className(),'soft'), 'soft'));

        return $this->render('common',[
            'user' => $user,
            'educations' => $educations,
            'phones' => $phones,
            'sites' => $sites,
            'soft' => $soft
        ]);


    }

    public function actionPortfolio($performer_id)
    {
        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }


        return $this->render('portfolio',[
            'user' => $user
        ]);

    }

    public function actionBlogList($performer_id)
    {
        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }


        $query = Blog::find(['user_id'=>$performer_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,
        ]);


        return $this->render('blog-list',[
            'user' => $user,
            'blog' => $blog,
            'pagination' => $pagination
        ]);
    }

    public function actionBlogView($performer_id, $link)
    {
        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }


        $article = Blog::findOne(['link'=>$link,'user_id'=>$performer_id]);
        $article->view_count ++;
        $article->save();


        return $this->render('blog-view',[
            'user' => $user,
            'article' =>$article,

        ]);
    }

    public function actionReview($performer_id)
    {
        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }


        return $this->render('review',[
            'user' => $user
        ]);
    }

    public function actionWorkplace($performer_id)
    {
        $user = User::findOne($performer_id);
        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }

        return $this->render('workplace',[
            'user' => $user
        ]);
    }

    public function actionGallery($performer_id)
    {
        $user = User::findOne($performer_id);

        if(!$user instanceof User){
            throw new BadRequestHttpException('Пользователь не найден');
        }


        $query = Gallery::find(['user_id'=>$performer_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($user->id,Gallery::className(),'youtube');

        $this->layout = 'gallery';

        return $this->render('gallery',[
            'user' => $user,
            'gallery' =>$gallery,
            'pagination' => $pagination,
            'videos' => $videos
         ]);
    }
}