<?php
namespace admin\action;
use \model\carmodel;
use \model\collocation;
use \model\tags;
use model\make;
class carmodelAction  extends \action{
	
	/**
	  * @method 变更库
	  * @author soul
	  */
	public function listChange()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('carModelFileds', $carmodel->fieldLnkCaption);
		\view::set('modelFiledVals', $carmodel->modelFiledVals);
		\view::put();
	}

	/**
	  * @method 变更库 数据
	  * @author soul
	  */
	public function getListChange()
	{
		$req = \mvc::$req;
        $carmodel = new carmodel();
        $data = $carmodel->getListChange($req);
        $this->successJson($data);
	}

	/**
	  * @method 区域明细
	  * @param  ma_id int [必填] 区域ID
	  * @author soul
	  */
	public function areaDetail()
    {
		$req = \mvc::$req;
		$carmodel = new carmodel();
		\view::set('smallModelfields', $carmodel->smallModelfields);
		\view::set('smallMustFileds', $carmodel->smallMustFileds);
		$dataArr = [];
		if(!empty($req['key']))
			$dataArr = $carmodel->getAreaInfo($req['key']);
		\view::set('dataArr', $dataArr);
		\view::put();
    }

	/**
	  * @method 保存|新增 区域
	  * @author soul
	  */
	public function saveAreaDetail()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$setArr = $req;
		$setArr['ma_fileds'] = [];
		$setArr['link_makes'] = explode(',', $setArr['link_makes']);
		if(!empty($req['ma_fileds']))
		{
			foreach($req['ma_fileds'] as $fk=>$v)
			{
				if(!empty($v['checked']))
					$setArr['ma_fileds'][$fk] = $v['name'];
			}
		}
		$setArr['ma_fileds'] = json_encode($setArr['ma_fileds'], JSON_UNESCAPED_UNICODE);
		$data = $carmodel->saveAreaDetail($req['ma_id'], $setArr);
		$this->successJson($data);
	}


	public function getModelFiled()
	{
		$carmodel = new carmodel();
		$fileds = $carmodel->fieldLnkCaption;
		$data = [];
		foreach($fileds as $fk=>$fv)
		{
			$data[] = ['key'=>$fk, 'value'=>$fv];
		}
		$this->successJson($data);
	}


	public function smallModelfields()
	{
		$carmodel = new carmodel();
		$fileds = $carmodel->smallModelfields;
		$data = [];
		foreach($fileds as $fk=>$fv)
		{
			$data[] = ['key'=>$fk, 'value'=>$fv];
		}
		$this->successJson($data);
	}

	
	
	public function makeList(){
		$req = \mvc::$req;
		$where = [];
		if($req['filters']){
			$where = $this->filter2medoo($req['filters']);
		}
		$make = new make();
		$data = $make->list($where, $req['page'], $req['rows'], $req['sidx'], $req['sord'],"mk_name");
		$this->successJson($data);
	}
    public function makeEditCell()
    {
		$req = \mvc::$req;
        $id = $req['id'];
        $oper = $req['oper'];
        $field = $req['field'];
        $value = $req[$field];
        $make = new make();
        if($oper=='edit'){
            $make->setValue($id,$field,$value);
        }
    }

	public function getSeries()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$rows = $carmodel->getModelSeries($req['ma_id'], $req['mk_id']);
		$data = [];
		foreach($rows as $k=>$v)
		{
			$data[] = ['key'=>$v['ms_id'], 'value'=>$v['name']];
		}
		$this->successJson($data);
	}
	
	public function getAreaTree()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->getAreaTree();
		//是否有权限控制
		if(!empty($req['pwcode']))
		{
			$pwids = \p::areas($req['pwcode']);
			if($pwids != '' && !\p::isAdmin())
			{
				$allArea = array_column($data, null, 'id');
				$rulecate = explode(',', $pwids);
				foreach($rulecate as $cid)
				{
					$pcatid = $allArea[$cid]['pId'];
					$rulecate[] = $pcatid;
					if(!empty($allArea[$pcatid]))
					$rulecate[] = $allArea[$pcatid]['pId'];
				}
				foreach($allArea as $k=>$v)
				{
					if($v['pId'] > 0 && !in_array($v['id'], $rulecate))
						unset($allArea[$k]);
				}
				$data = array_values($allArea);
			}
		}
		$this->successJson($data);
	}

	public function getCollNodes()
	{
		$req = \mvc::$req;
		$collocation = new collocation();
		$rows = $collocation->getParentNodes($req['parent_id']);
		$data = [];
		foreach($rows as $k=>$v)
		{
			
			$data[] = ['key'=>$v['o_id'], 'value'=>$v[LG_NAME]];
		}
		$this->successJson($data);
	}


	public function getModelList()
	{
		$req = \mvc::$req;
        $carmodel = new carmodel();
		$req['orderby'] = 'mk.name,ms.name,mm.name';
        $data = $carmodel->getModelList($req);
        $this->successJson($data);
	}

	public function getModelGroupList()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$req['orderby'] = 'mk.name,ms.name,mm.name';
        $data = $carmodel->getModelGroupList($req);
        $this->successJson($data);
	}

	public function lists()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();

		$data = $carmodel->getArea();
		\view::set('areas', $data);

		$tags = new tags();
		$data = $tags->getTags();
		\view::set('tags', $data);

		$data = $carmodel->getAreaShowFiled(0);
		\view::set('filedArr', $data);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
	}

	//管理小车型区域
	public function changeSeriesAreaLink()
	{
		$req = \mvc::$req;
		$dataArr = [];
		foreach(explode(',', $req['msids']) as $msid)
		{
			foreach($req['areaids'] as $tid)
			{
				if($msid > 0 && $tid > 0)
					$dataArr[] = ['sal_ma_id'=>$tid, 'sal_ms_id'=>$msid];
			}
		}
		$carmodel = new carmodel();
		$data = $carmodel->changeSeriesAreaLink($req['actType'], $dataArr);
		$this->successJson($data);
	}


	//管理车型区域
	public function changeModelAreaLink()
	{
		$req = \mvc::$req;
		$dataArr = [];
		foreach(explode(',', $req['mmids']) as $mmid)
		{
			foreach($req['areaids'] as $tid)
			{
				if($mmid > 0 && $tid > 0)
					$dataArr[] = ['ma_id'=>$tid, 'mm_id'=>$mmid];
			}
		}
		$carmodel = new carmodel();
		$data = $carmodel->changeModelAreaLink($req['actType'], $dataArr);
		$this->successJson($data);
	}



	//管理区域
	public function changeAreaLink()
	{
		$req = \mvc::$req;
		$dataArr = [];
		foreach(explode(',', $req['valids']) as $valid)
		{
			foreach($req['areaids'] as $maid)
			{
				if($maid > 0 && $valid > 0)
					$dataArr[] = ['ma_id'=>$maid, 'val_id'=>$valid];
			}
		}
		$carmodel = new carmodel();
		$data = $carmodel->changeAreaLink($req['tagType'], $req['actType'], $dataArr);
		$this->successJson($data);
	}



	/**
	  * @method 删除区域
	  * @param  maids array [必填] [1,2,3,...]
	  * @author soul
	  */
	public function delModelArea()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->delModelArea($req['maids']);
		$this->successJson($data);
	}


	/**
	  * @method 删除大车型
	  * @param  mkid int [必填] 大车型ID
	  * @author soul
	  */
	public function delModelMake()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->delModelMake($req['mkid']);
		$this->successJson($data);
	}

	/**
	  * @method 删除小车型
	  * @param  ids int array [必填] [1,2,3,...]
	  * @author soul
	  */
	public function delSeries()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->delSeries($req['ids']);
		$this->successJson($data);
	}


	/**
	  * @method 检测删除车型
	  * @param  ids array [必填] 1,2,3,...
	  * @author soul
	  */
	public function chkdelModels()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->chkdelModels(explode(',', $req['ids']));
		$this->successJson($data);
	}

	/**
	  * @method 删除车型
	  * @param  ids array [必填] 1,2,3,...
	  * @author soul
	  */
	public function delModels()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->delModels(explode(',', $req['ids']), $req['delremark']);
		$this->successJson($data);
	}

	
	/**
	  * @method 删除变更库记录
	  * @param  ids  string  [必填] mmc_id  多个逗号分隔
	  * @author soul
	  */
	public function delModelChange()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->delModelChange(explode(',', $req['ids']));
		$this->successJson($data);
	}


	/**
	  * @method 获取品牌id
	  * @param  regionids  string  [必填] 多个逗号分隔
	  * @author soul
	  */
	public function getMakeIds()
	{
		$req = \mvc::$req;
		$carmodel = new \model\carmodel();
		$data = $carmodel->getMakeIds($req['regionids']);
		$this->successJson($data);
	}
	

	/**
	  * @method 小车型明细
	  * @param  ms_id int [必填] 小车型ID
	  * @author soul
	  */
	public function seriesDetail()
    {
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$dataArr = [];
		if(!empty($req['ms_id']))
		{
			$dataArr = $carmodel->getSeriesInfo($req['ms_id']);
			$dataArr['areas'] = array_column($dataArr['areas'], null, 'ma_id');
		}
		else if(!empty($req['mk_id']))
		{
			$rows = $carmodel->getMakeInfo($req['mk_id']);
			if(!empty($rows))
			{
				$dataArr = [
					'ms'=>[
						'mk_id'=>$rows['mk_id'],
						'mk_name'=>$rows['name']
					]
				];
			}
		}
		\view::set('dataArr', $dataArr);

		$data = $carmodel->getArea();
		\view::set('areas', $data);

		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }

	/**
	  * @method 保存|新增 小车型
	  * @author soul
	  */
	public function saveSeriesDetail()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$setArr = ['base'=>$req['base'], 'areas'=>[]];
		if(!empty($req['areas']))
		{
			foreach($req['areas'] as $id=>$v)
			{
				if(!empty($v['checked']))
					$setArr['areas'][] = ['sal_ma_id'=>$id, 'sal_ms_id'=>$req['ms_id'], 'sal_name'=>$v['sal_name']];
			}
		}

		$data = $carmodel->saveSeriesDetail($req['ms_id'], $setArr);
		$this->successJson($data);
	}

	/**
	  * @method 小车型的单字段
	  * @author soul
	  */
	public function setSeriesCell()
	{
		$req = \mvc::$req;
        $msid = $req['id'];
        $field = $req['field'];
        $value = $req[$field];
		
		//区域别名管理
		if(stripos($field, 'area_') !== false)
		{
			$carmodel = new carmodel();
			$maid = str_replace('area_', '', $field);
			//删除
			if(empty($value))
			{
				$setArr = [['sal_ma_id'=>$maid, 'sal_ms_id'=>$msid]];
				$carmodel->changeSeriesAreaLink('del', $setArr);
			}
			else
			{
				$setArr = [['sal_ma_id'=>$maid, 'sal_ms_id'=>$msid, 'sal_name'=>substr($value, 2)]];
				$carmodel->changeSeriesAreaLink('add', $setArr);
			}
		}
		else
		{
			$setArr = [
				$req['field']=>$req[$req['field']]
			];
			$carmodel = new carmodel();
			$carmodel->setSeriesCell($req['id'], $setArr);
		}
	}

	/**
	  * @method 车型明细
	  * @param  mm_id int [必填] 车型ID
	  * @author soul
	  */
	public function modelDetail()
    {
		$req = \mvc::$req;
		$carmodel = new carmodel();
		if(!empty($req['mm_id']))
		{
			$dataArr = $carmodel->getModelInfo($req['mm_id']);
		}
		else if(!empty($req['ms_id']))
		{//&mk_id=1&ms_id=200
			$dataArr = $carmodel->getSeriesInfo($req['ms_id']);
		}
		$collocation = new collocation();
		$sourceArr = $collocation->getParentNodes(23);
		\view::set('sourceArr', $sourceArr);

		if(!empty($dataArr['source_link']))
		{
			$dataArr['source_link'] = array_column($dataArr['source_link'], null, 'mms_source');
		}
		
		\view::set('ma_id', (int) $req['ma_id']);
		\view::set('dataArr', $dataArr);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }
	
	/**
	  * @method 保存|新增 车型
	  * @author soul
	  */
	public function saveModelDetail()
	{
		$req = \mvc::$req;
		$setArr = ['base'=>$req['base'], 'source'=>$req['source']];
		$carmodel = new carmodel();
		$data = $carmodel->saveModelDetail($req['mm_id'], $setArr);
		$this->successJson($data);
	}

	/**
	  * @method 可销售区域列表
	  * @author soul
	  */
	public function arealist()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->getArea();
		\view::set('areaArr', $data);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
	}
	

	/**
	  * @method 大车型列表
	  * @author soul
	  */
	public function mkList()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->getModelMake($req['ma_id']);
		\view::set('makeArr',$data);
		if(!empty($data))
		{
			$tjrows = $carmodel->getModelMakeCount(array_column($data, 'mk_id'), $req['ma_id']);
			\view::set('tjArr', array_column($tjrows, null, 'mk_id'));
		}

		\view::set('req', $req);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
	}
	

	/**
	  * @method 小车型列表
	  * @author soul
	  */
	public function msList()
	{
		$req = \mvc::$req;
		$carmodel = new carmodel();
		$data = $carmodel->getArea();
		\view::set('areas', $data);

		$data = $carmodel->getModelSeries($req['ma_id'], $req['mk_id']);
		\view::set('msArr',$data);
		if(!empty($data))
		{
			$tjrows = $carmodel->getModelSeriesCount(array_column($data, 'ms_id'), $req['ma_id']);
			\view::set('tjArr', array_column($tjrows, null, 'ms_id'));
		}
		\view::set('req', $req);
		\view::set('QUERY_STRING', $_SERVER['QUERY_STRING']);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
	}

	/**
	  * @method 小车型列表
	  * @author soul
	  */
	public function getSeriesList()
	{
		$req = \mvc::$req;
        $carmodel = new carmodel();
		$req['orderby'] = 'mk.name,ms.name';
        $data = $carmodel->getSeriesList($req);
        $this->successJson($data);
	}



	/**
	  * @method 车型列表
	  * @author soul
	  */
	public function mmList()
	{
		$req = \mvc::$req;

		$carmodel = new carmodel();
		$data = $carmodel->getArea();
		\view::set('areas', $data);

		$tags = new tags();
		$data = $tags->getTags();
		\view::set('tags', $data);

		$data = $carmodel->getAreaShowFiled($req['ma_id']);
		\view::set('filedArr', $data);

		\view::set('QUERY_STRING', $_SERVER['QUERY_STRING']);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
	}


	/**
	  * @method 明细
	  * @param  mmc_id int [必填] ID
	  * @author soul
	  */
	public function modelChangeDetail()
    {
		$req = \mvc::$req;
        $carmodel = new carmodel();
        $data = $carmodel->getListChange($req);
		$dataArr = $data['rows'][0];
		$changeArr = $dataArr['mmc_change'];
		\view::set('dataArr', $dataArr);
		\view::set('changeArr', $changeArr);
		\view::put($this->activeView().substr(__METHOD__,strpos(__METHOD__,':')+2));
    }
}