<?php
namespace admin\action\pro;


use admin\action\baseAction;
use model\file;
use model\pro\pic;
use model\pro\image;
use model\pro\photo;
use model\pro\pro;
use model\sample\sample;
use model\sample\work;

/**
 * Class picAction
 * @package admin\action\pro
 */
class picAction extends baseAction
{

    //照片综合
    public function pictureSynthesis()
    {
        $req = \mvc::$req;
		//前置条件
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['numbers'])){
			$rules['numbers'] = formatNums($req['numbers']);
			$rules['numlike'] = empty($req['numlike']) ? 0 : $req['numlike'];
		}
        /*
        $pic = new pic();

        $data = $pic->pictureSynthesis($req['filters'], $req['page'], $req['rows'], $req['sidx'], $req['sord'],'ppic_fileid desc');
        */
        $data =(new image())->pictureSynthesis($rules,$req['filters'], $req['page'], $req['rows'], $req['sidx'], $req['sord']);
        $this->successJson($data);
    }

    public function prolist()
    {
        //////(new photo())->clear();
        $req = \mvc::$req;
		//前置条件
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['numbers'])){
			$nums = str_replace("\r\n",";",$req['numbers']);
			$nums = str_replace("\n",";",$nums);
			$nums = str_replace("；",";",$nums);
			$nums = explode(";",$nums);
			$rules['numbers'] = $nums;
			$rules['numlike'] = empty($req['numlike']) ? 0 : $req['numlike'];
		}
		if(!empty($req['pwcode']) && !\p::isAdmin()){
		    $ids = \p::cates($req['pwcode']);
		    if($ids!=''){ 
		       $ids = explode(',',$ids); 
    		   $rules['p_cate'] = $ids;
		    }
		}
		if(!empty($rules['checkOption'])){
		    $rules['propictypeOption'] = $rules['checkOption'];
		}
        $pro = new pro();
        $data = $pro->list($rules,$req['filters'], $req['page'], $req['rows'], $req['sidx'], $req['sord'],'p_outnum');
		if(isset($rules['propictype']) && !empty($rules['propictype'])){
			foreach($data['rows'] as &$row){
				if(in_array($rules['propictype'],['main','tecdoc','catalog_g','catalog_gsp','usa'])){
				    //生成的单图
					if($row['p_pic']){
						$smallfile = \mvc::$cfg['path']['files'].'/pro/'.$rules['propictype'].'/'.($row['p_id'] % 100).'/'.$row['p_id'].'small.jpg?'.time();
						$bigfile = \mvc::$cfg['path']['files'].'/pro/'.$rules['propictype'].'/'.($row['p_id'] % 100).'/'.$row['p_id'].'big.jpg?'.time();
						$field = 'pic_1';
						$row[$field] = $smallfile;
						$row['picinfo'][$field] = [
							'ismain' => false,
							'ischecked' => false,
							'fileid' => 0,
							'fileremark' => '',
							'bigfile' => $bigfile
						];
					}
				}else{
					$pics = $pro->getPics($row['p_id'],$rules['propictype'],$row['p_pic']);
					$i=1;
					foreach($pics as $pic){
					    if(isset($rules['propictypeOption'])){
				            if(in_array($rules['propictypeOption'],[3,300])){
				                if(empty($pic['ischecked']))
				                continue;//只看已审核的图片
                            }else if($rules['propictypeOption']==4){
                                if($pic['ischecked'])
                                    continue;//只看未审核的图片 
                            }else if($rules['propictypeOption']==6){
                                if(!$pic['ismain'])
                                    continue;//只看主图
                            }
					    }
						$field = 'pic_'.$i;
						$row[$field] = $pic['smallfile'];
						$row['picinfo'][$field] = [
							'ismain' => $pic['ismain'],
							'ischecked' => $pic['ischecked'],
							'isback' => false,
							'isdel' => false,
							'fileid' => $pic['fileid'],
							'filebase' => strtoupper($pic['ppic_filebase']),
							'fileremark' => $pic['fileremark'],
							'bigfile' => $pic['filename']
						];
						$i++;
					}
					//获取 退回 图片，当是 “上传原始图片”“上传精修图片”时
					if(in_array($rules['propictypeOption'],['100','200','400','500'])){
					    if(in_array($rules['propictypeOption'],['100','200'])){
					        $type = 'init_back';
					    }else if(in_array($rules['propictypeOption'],['400','500'])){
					        $type = 'beautify_back';
					    }
    					$pics = $pro->getPics($row['p_id'],$type,$row['p_pic']);
    					foreach($pics as $pic){
    						$field = 'pic_'.$i;
    						$row[$field] = $pic['smallfile'];
    						$row['picinfo'][$field] = [
    							'ismain' => $pic['ismain'],
    							'isback' => true,
    							'isdel' => false,
    							'ischecked' => $pic['ischecked'],
    							'fileid' => $pic['fileid'],
    							'filebase' => strtoupper($pic['ppic_filebase']),
    							'fileremark' => $pic['fileremark'],
    							'bigfile' => $pic['filename']
    						];
    						$i++;
    					}
					}
				}
			}//foreach
		}
        $this->successJson($data);
    }


    public function getPics($pid,$pictype,$mainpic=0)
    {
        $pro = new pro();
		$data = $pro->getPics($pid,$pictype,$mainpic);
        $this->successJson($data);
    }

    public function getPicsByFileBase($pid,$filebase)
    {
        $photo = new photo();
		$data = $photo->getPicsByFileBase($pid,$filebase);
        $this->successJson($data);
    }

    public function list()
    {
        $pic = new pic();
        \mvc::$req['type'] = explode(',',\mvc::$req['type']);
        $result = $pic->list(\mvc::$req['key'],\mvc::$req['type']);
        $pro = (new pro())->getRowByKey(\mvc::$req['key']);
        if($result === false){
            $result = [];
        }else{
            foreach ($result as &$value)
            {
                if(in_array($value['ppic_type'],['init','beautify'])){
                    $value['state'] = $value['ppic_state'];
                }
                $value['is_master'] = $pro['p_pic'] == $value['ppic_fileid'] ? 1 : 0;
            }
        }
        $this->successJson($result);
    }

    //设为主图
    public function setMaster()
    {
        $pic = new pic();
        $result = $pic->setMasterPicture(\mvc::$req['p_id'],\mvc::$req['fileid']);
        if($result === false){
            $this->msgJson('操作失败');
        }
        $this->successJson(true);
    }

    //删除
    public function delete()
    {
        $pId =  \mvc::$req['p_id'];
        $fileIds = \mvc::$req['fileid'];
        $fileIds = explode(',',$fileIds);
        $pic = new pic();
        $result = $pic->deleteRow($fileIds,$pId);
        if($result === false){
            $this->msgJson(lg('操作失败,请重新再试'));
        }
        $this->successJson();
    }

	//审核图片
    public function checkPic($pid,$fileid)
    {
		$photo = new photo();
        $photo->checkPic($pid,$fileid);
        $this->successJson();
    }

	//设置为主图
    public function setMainPic($pid,$fileid)
    {
		$photo = new photo();
        $photo->setMainPic($pid,$fileid);
        $this->successJson();
    }

	//删除图片
    public function toDelete($pid,$fileid)
    {
		$photo = new photo();
        $mainpic = $photo->toDelete($pid,$fileid);
        $this->successJson(['mainpic'=>$mainpic]);
    }

    //退回
    public function back($pid,$fileid)
    {
        $photo = new photo();
        $result = $photo->back($pid,$fileid);
        if($result === false){
            $this->msgJson(lg('操作失败,请重新再试'));
        }
        $this->successJson();
    }
    
    /**
     * 生成拍照清单
     */
    public function createPicTask($begin,$end)
    {
        //$photo = new photo();
        //$result = $photo->createPicTask($begin,$end);
        $result = makeOne(\model\pro\image::class)->createPicTask($begin,$end);
        if($result === false){
            $this->msgJson(lg('操作失败,请重新再试'));
        }
        $this->successJson();
    }
    
    /**
     * 添加一个产品到拍照清单
     */
    public function addPicTask($p_id)
    {
        $photo = new photo();
        $result = $photo->addPicTask($p_id);
        $this->successJson( $result );
    }
    
    /**
     * 批量-操作
	 * @param string $cmd 命令
	 * @param string $pids ID集合
	 * @param string $propicType 图片类型, 'init','init_back','init_del','beautify','beautify_back','beautify_del'
	 * @param string $opcode 操作码
	 * @return string
     */
    public function lot($cmd, $pids, $propicType, $opcode)
    {
        $photo = new photo();
        $result = $photo->lot($cmd, $pids, $propicType, $opcode);
        $this->successJson( $result );
    }
    
}