<?php
/**
 * Created by PhpStorm.
 * User: xiaofeng
 * Date: 2018/3/13
 * Time: 上午8:46
 * 资讯,奇葩说
 **/
namespace backend\controllers;
use backend\base\CommonController;
use backend\base\Help;
use backend\server\NewsInformation;
use backend\server\UploadFile;
use common\models\House;
use common\models\HouseNews;
use common\models\News;
use common\models\NewsWeirdo;
use backend\server\SetUploadImg;
use Yii;
class NewsController extends CommonController
{

        /*
         * 资讯显示页面
         * **/
        public function actionIndex()
        {

            $model = new \common\models\CategoryNews();
             $list = $model->getList([],['id','news_name']);

//            $city = new \common\models\CategoryCity();
//            $city->pid = 0;
//            $cityList = $city->getList([],['city_name','id']);
            $city = new \common\models\CategoryCity();

//            $city->
//            $city->pid = 0;
            $cityList = $city->Sonlist();
             return $this->render('index',['category'=>$list,'city'=>$cityList]);
        }

        /*
         * 获取资讯信息
         * **/
        public function actionNewsform()
        {
            $model = new NewsInformation();
            $result = $model->NewsList();

            if($result != false)
            {
                    return Help::JsonData(0,'成功',$result['count'],$result['data']);
            }
                    return Help::JsonCode(0,'暂无数据');
        }

        /*
         * 添加资讯页面
         * **/
        public function actionAdd()
        {
            $city = new \common\models\CategoryCity();
            $cityList = $city->Sonlist();

            $news = new \common\models\CategoryNews();
            $newsList = $news->getList([],['id','news_name']);

            $houseModel = new \common\models\House();
            $house = $houseModel->AddNewsHouse();

            return $this->render('add',['city'=>$cityList,'news'=>$newsList,'house'=>$house]);
        }

        /*
         * 添加资讯数据
         * **/
        public function actionAddform()
        {
            $input = Yii::$app->request->post();

            $url = Yii::$app->params['img_url']['news'];
            $addImg = [];

            try{

                $arrImg = \backend\server\UploadFile::InstancesImgName_v1('img',$url); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
                if(is_array($arrImg))
                {
                    $input['thumb'] = json_encode($arrImg);
                }

                $model = new News();
                $model->scenario = 'add';
                $model->load($input,'');
                if($model->save())
                {
                    //处理水印
                    if($input['thumb_watermark'] == 1 )
                    {
                        $ImgSet = new SetUploadImg();
                        $ImgSet->SetImgWatermark($input['thumb'],$url);
                    }

                    $UserNews  = new \common\models\UserNews();
                    $UserNews->uid = Yii::$app->session['user_info']['uid'];
                    $UserNews->nid = $model->attributes['id'];
                    $UserNews->create_at = $_SERVER['REQUEST_TIME'];
                    $UserNews->insert();

                    //将资讯关联到楼盘动态
                    if (!empty($input['hid'])) {
                        $Nmodel = new HouseNews();
                        $Nmodel->hid = $input['hid'];
                        $Nmodel->nid = $model->attributes['id'];
                        $Nmodel->uid = Yii::$app->session['user_info']['uid'];
                        $Nmodel->create_at = $_SERVER['REQUEST_TIME'];
                        $Nmodel->insert();
                    }

                    return Help::JsonCode(Help::SUCCESS,'资讯添加成功');
                }

                return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);

            }catch (\Exception $e){

                return Help::JsonCode(Help::ERROR,'资讯添加失败',$e->getMessage());
            }

            exit;
//            if(!empty($input['img'])){
                //拉取图片
//                foreach ($input['img'] as $val)
//                {
//                    $img =   (new \backend\server\NewsInformation())->getImgResources($url,$val);
//                    if(!empty($img))
//                    {
//                        array_push($addImg,$img);
//                    }
//                }
//            }

            if(count($addImg) >3){
                return Help::JsonCode(Help::ERROR,'资讯添加失败',['img'=>['图片最大数量为3张']]);
            }

            if(!empty($addImg))
            {
                $input['thumb'] =json_encode( array_values($addImg));
            }

            if($model->load($input,'') && $model->save())
            {

            }
            return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);


            //处理图片
//            $url = Yii::$app->params['img_url']['news'];
//            $input = Yii::$app->request->post();
//            $addImg = [];
//            if(!empty($_FILES)){
//                $addImg = \backend\server\UploadFile::InstancesImgName('img',$url); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
//            }
//            if(!empty($input['img'])){
//                foreach ($input['img'] as $val)
//                {
//                    $img =   (new \backend\server\NewsInformation())->getImgResources($url,$val);
//                    if(!empty($img))
//                    {
//                        array_push($addImg,$img);
//                    }
//                }
//            }
//
//            if(count($addImg) >3){
//                return Help::JsonCode(Help::ERROR,'资讯添加失败',['img'=>['图片最大数量为3张']]);
//            }
//
//            if(!empty($addImg))
//            {
//                $input['thumb'] =json_encode( array_values($addImg));
//            }
//            $model = new News();
//            $model->scenario = 'add';
//            if($model->load($input,'') && $model->save())
//            {
//                //处理水印
//                if($input['thumb_watermark'] == 1 )
//                {
//                    $ImgSet = new SetUploadImg();
//                    $ImgSet->SetImgWatermark($addImg,$url);
//                }
//
//                $UserNews  = new \common\models\UserNews();
//                $UserNews->uid = Yii::$app->session['user_info']['uid'];
//                $UserNews->nid = $model->attributes['id'];
//                $UserNews->create_at = $_SERVER['REQUEST_TIME'];
//                $UserNews->insert();
//                return Help::JsonCode(Help::SUCCESS,'资讯添加成功');
//            }
//            return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);
        }

        /*
         * 修改资讯页面
         * **/
        public function actionNewsedit()
        {
            $model = new \common\models\News();
            $newRow = $model->FindId(Yii::$app->request->get('id'));
            if($newRow != null)
            {
                $city = new \common\models\CategoryCity();
                $cityList = $city->Sonlist();
                $news = new \common\models\CategoryNews();
                $newsList = $news->getList([],['id','news_name']);
                $newRow['thumb'] = json_decode($newRow['thumb'],true);

                $houseModel = new \common\models\House();
                $house = $houseModel->AddNewsHouse();

                return $this->render('newsedit',['model'=>$newRow,'city'=>$cityList,'news'=>$newsList,'house'=>$house]);
            }
        }

        /*
         * 资讯数据修改
         * **/
        public function actionNewseditform()
        {
            $input = Yii::$app->request->post();

            $model = new News();

            $row = $model->FindId($input['id']);
            if($row)
            {
                $row->scenario = 'edit';
                $addImg = [];
                $input['thumb'] = $row['thumb'];
                $ImgUrl = Yii::$app->params['img_url']['news'];
                $ImgArr = json_decode($row->thumb,true);
                //转换原有图片为数组格式
                if(!empty($input['delimg']) && is_array($input['delimg']))
                {
                    $ImgArr = array_diff($ImgArr,$input['delimg']);  //需要保留的数组  如果删除全部图片 返回空数组
                    if(!empty($ImgArr))
                    {
                        $input['thumb'] = json_encode($ImgArr);
                    }
                }

                if(!empty($_FILES) || !empty($input['img'])){

                    if(!empty($_FILES)){
                        $addImg = \backend\server\UploadFile::InstancesImgName('img',$ImgUrl); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
                    }

                    if(!empty($input['img']))
                    {
                        foreach ($input['img'] as $val)
                        {
                            $getImg = (new \backend\server\NewsInformation())->getImgResources($ImgUrl,$val);
                            if($getImg)
                            {
                                array_push($addImg,$getImg);
                            }
                        }
                    }

                    if(count($addImg) > 3 || (count($ImgArr) + count($addImg)) >3){
                        foreach ($addImg  as $val){
                            UploadFile::delImg($ImgUrl,$val);
                        }
                        return Help::JsonCode(Help::ERROR,'失败',['img'=>['图片最大数量为3张']]);
                    }

                    $input['thumb'] = json_encode(array_values( array_merge($addImg,$ImgArr)));
                }

                //修改楼盘关联的资讯
                if (!empty($input['hid']) && !empty($row['hid']) &&$input['hid'] != $row['hid']) {
                    $HouseNewsId = HouseNews::find()->andWhere(['hid'=>$row['hid'],'nid'=>$row['id'],'del'=>1])->select(['hnid'])->asArray()->one()['hnid'];
                    $HouseNews = HouseNews::findOne($HouseNewsId);
                    if ($HouseNews != null) {
                        $HouseNews->hid = $input['hid'];
                        $HouseNews->uid = Yii::$app->session['user_info']['uid'];
                        $HouseNews->create_at = $_SERVER['REQUEST_TIME'];
                        $HouseNews->update(false);
                    }
                }

                //修改楼盘关联的资讯
                if (empty($row['hid']) && !empty($input['hid'])) {
                    $Nmodel = new HouseNews();
                    $Nmodel->hid = $input['hid'];
                    $Nmodel->nid = $row['id'];
                    $Nmodel->uid = Yii::$app->session['user_info']['uid'];
                    $Nmodel->create_at = $_SERVER['REQUEST_TIME'];
                    $Nmodel->insert();
                }


                if($row->load($input,'') && $row->save())
                {
                    if($input['thumb_watermark'] == 1 && !empty($addImg) )
                    {
                        $ImgSet = new SetUploadImg();
                        $ImgSet->SetImgWatermark($addImg,$ImgUrl);
                    }

                    if(!empty($input['delimg'])){
                        foreach ($input['delimg'] as $val)
                        {
                            UploadFile::delImg($ImgUrl,$val);
                        }
                    }

                    return Help::JsonCode(Help::SUCCESS,'成功');
                }
                return Help::JsonCode(Help::ERROR,'失败',$row->errors);
            }

        }

        /*
         * 获取资讯类目
         * **/
        public function actionNewscategory()
        {
//            $model = new \common\models\CategoryNews();
//            $list = $model->getList([],['id','news_name']);
//            if(!empty($list))
//            {
//                return Help::JsonCode(Help::SUCCESS,'成功',$list);
//            }
//                return Help::JsonCode(Help::ERROR,'失败');
        }

        /*
         * 删除
         * **/
        public function actionNewsdel()
        {
            $model = new NewsInformation();
            if($model->delNews() === true)
            {
                return Help::JsonCode(Help::SUCCESS,'操作成功');
            }
                return Help::JsonCode(Help::ERROR,'操作失败');
        }

        /*
         * 解审
         * **/
        public function actionNewsviewcontrol()
        {
            $model = new NewsInformation();
            if($model->delNews(2) === true)
            {
                return Help::JsonCode(Help::SUCCESS,'操作成功');
            }
            return Help::JsonCode(Help::ERROR,'操作失败');
        }


        /*
         * 弹窗选择封面图
         * **/
        public function actionPopup()
        {
            return $this->render('popup');
            
        }
	 //修改点击数
		public function actionEditclicks()
        {

            $model = new News();
            $input = Yii::$app->request->post();
            $row = $model->FindById($input['id']);
            if(!empty($row))
            {
                if(!empty($input['clicks']))
                {
                    $row->clicks = Yii::$app->request->post('clicks');
                }
                 if($row->update(false) == true) return Help::JsonCode(Help::SUCCESS,'操作成功');
            }
            return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
        }

    /*
     * 奇葩说 页面
     **/
    public function actionWeirdo()
    {
        return  $this->render('weirdo');
    }

    /*
     * 奇葩说-获取数据列表
     **/
    public function actionWeirdoform()
    {
        $model = new NewsWeirdo();
        $model->subject = Yii::$app->request->post('title');
        $rows = $model->getList(Yii::$app->request->post());
        if($rows != null)
        {
            foreach ($rows as &$val)
            {
                $val['create_at'] = date('Y-m-d H:i',$val['create_at']);
            }
            return Help::JsonData(0,Yii::t('app','get_success'),$model->getListTotal(),$rows);
        }
        return Help::JsonCode(Help::SUCCESS,Yii::t('app','get_error'));
    }

    /*
     * 奇葩说-添加页面
     **/
    public function actionWeirdoadd()
    {
        return $this->render('weirdoadd');
    }

    /*
     *奇葩说-添加数据
     **/
    public function actionWeirdoaddform()
    {
        $input = Yii::$app->request->post();
        $model = new NewsWeirdo();
        $model->scenario = 'add';
        if(!empty($_FILES['img']))
        {
            $url = Yii::$app->params['img_url']['weirdo'];
            $img = UploadFile::InstanceImgName('img',$url);
            if(is_string($img))
            {
                $model->thumb = $img;
                //添加水印
                if(isset($input['thumb_watermark']) && $input['thumb_watermark'] == 1)
                {
                    $ImgSet = new SetUploadImg();
                    $ImgSet->SetImgWatermark($model->thumb,$url);
                }


            }
        }
        $auth = $model->Authenticator($input);
        if(is_object($auth))
        {
            if($auth->save())
            {
                //压缩图片
                if(isset($input['compress']) && $input['compress'] == 1)
                {
                    $compressParams = [];
                    $compressParams['data']['imgname']  = $model->thumb;
                    $compressParams['data']['url']      = $url;
                    $compressParams['data']['source']   = '奇葩说@添加';
                    $model = new \backend\event\TinifyEvent();
                    $model->CompressImg($compressParams);
                }
                return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_success'));
            }
        }
        UploadFile::delImg(Yii::$app->params['img_url']['weirdo'],$model->thumb);
        return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_error'),$auth);
    }

    /*
     * 奇葩说-修改页面
     **/
    public function actionWeirdoedit()
    {
        $input = Yii::$app->request->get();
        if(is_numeric($input['id']))
        {
            $row =  NewsWeirdo::findOne(Yii::$app->request->get('id'));
            if($row != null)
            {
                return $this->render('weirdoedit',['model'=>$row]);
            }
        }
    }

    /*
     * 奇葩说-修改数据
     **/
    public function actionWeirdoeditform()
    {
        $input = Yii::$app->request->post();
        $model = new NewsWeirdo();
        $row = $model->FindById($input['id']);
        if(!empty($row))
        {
            $url = Yii::$app->params['img_url']['weirdo'];
            if(!empty($_FILES['img']))
            {
                $img = UploadFile::InstanceImgName('img',$url);
                if(is_string($img))
                {
                    UploadFile::delImg($url,$row->thumb);
                    $input['thumb'] = $img;
                    //添加水印
                    if(isset($input['thumb_watermark']) && $input['thumb_watermark'] == 1)
                    {
                        $ImgSet = new SetUploadImg();
                        $ImgSet->SetImgWatermark($input['thumb'],$url);
                    }
                }

            }
            $auth = $model->Authenticator($input);
            if(is_object($auth))
            {
                $row = Help::SetAttr($input,$model,$row);
                if($row->save()){
                    //压缩图片
                    if(isset($input['compress']) && $input['compress'] == 1 && isset($input['thumb']))
                    {
                        $compressParams = [];
                        $compressParams['data']['imgname']  = $input['thumb'];
                        $compressParams['data']['url']      = $url;
                        $compressParams['data']['source']   = '奇葩说@修改';
                        $model = new \backend\event\TinifyEvent();
                        $model->CompressImg($compressParams);
                    }
                    return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_success'));
                }
            }
            return Help::JsonCode(Help::ERROR,Yii::t('app','add_error'),$auth);
        }
    }

    /*
     * 奇葩说-排序,点击,
     **/
    public function actionWeirdoeditcolumn()
    {
        $input = Yii::$app->request->post();
        $model = NewsWeirdo::findOne($input['id']);
        if(!empty($model))
        {
            switch ($input['type'])
            {
                case 'click':
                    $model->click = $input['click'];
                    break;
                case 'sort':
                    $model->sort = $input['sort'];
                    break;
                case 'show':
                    if($model->is_show == 1)
                    {
                        $model->is_show = 2;
                    }
                    else
                    {
                        $model->is_show = 1;
                    }
                    break;
            }
            if($model->save()) return Help::JsonCode(Help::SUCCESS,Yii::t('app','edit_success'));
        }
        return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
    }

    /*
     * 奇葩说-批量删除
     **/
    public function actionWeirdodel()
    {
        $del =  NewsWeirdo::updateAll(['del'=>2],['id'=>Yii::$app->request->post('id')]);
        if($del >0)
        {
            return Help::JsonCode(Help::SUCCESS,Yii::t('app','edit_success'));
        }
        return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
    }
    /*
    * 批量同步资料显示页面
    */
    public function actionBatchsync()
    {
        $input = Yii::$app->request->get();
        return $this->render('batchsync',$input);
    }

    public function actionConfirmsync()
    {
        $input = Yii::$app->request->post();
        if(!empty($input['nid']))
        {
            $input['id'] =  explode(',',trim($input['nid'],','));
            $M = new \backend\server\SyncNews();
            $res = $M->NewsList($input);
            $res = json_decode($res,true);
            if(is_array($res) && !empty($res))
            {
                if($res['code'] == 200) return Help::JsonCode(Help::SUCCESS,'操作成功');
            }
            return Help::JsonCode(Help::ERROR,$res['msg']);
        }

    }

    public function actionStatistica()
    {
        $model = new \common\models\CategoryNews();
        $list = $model->getList([],['id','news_name']);
        return $this->render('statistica',['category'=>$list]);
    }


    public function actionStatisticaform()
    {
       $model = new \common\models\User();
       $input = Yii::$app->request->post();
        if(!empty($input['date_month']))
        {
            $start_end_time = \common\Helps\Time::getthemonth($input['date_month']);

            if(!empty($start_end_time))
            {
                $startTime = strtotime($start_end_time[0].' 00:00:00');
                $endTime = strtotime($start_end_time[1].' 23:59:59');
            }
        }else{
            $startTime= '';
            $endTime = '';
        }
        $query = $model::find();
        $query->select(['pfg_user.uid','pfg_user.name']);
        $query->andWhere(['pfg_user.status'=>1]);
        $query->joinWith(['news'=>function($q) use ($startTime,$endTime) {
            $q->select(['pfg_news.author','category','create_at']);
            $q->andWhere(['pfg_news.del'=>1]);
            if(!empty($startTime) || !empty($endTime)){
//                p($startTime);die;
                $q->andWhere(['between','pfg_news.create_at',$startTime,$endTime]);
            }


        }]);
        $data = $query->asArray()->all();
        $cnmodel = new \common\models\CategoryNews();
        $cnmodel->del=1;
        $categorynew = $cnmodel->getList([],['id','news_name']);
        array_walk($data,function(&$val) use ($categorynew){
            $val['total'] = count($val['news']);
            $count = array_count_values(array_column($val['news'],'category'));
            array_walk($categorynew,function(&$item) use ($count,&$val){
                (array_key_exists($item['id'],$count))? $item['num'] = $count[$item['id']] : $item['num']=0;
                $val['news_name_'.$item['id']] = $item['num'];
            });
            unset($val['news']);
        });
        if(!empty($data)){
            return Help::JsonData(0,'成功',0,$data);
        }
        return Help::JsonCode(Help::ERROR,'暂无数据');
    }
}