<?php
namespace admin\action;

use model\country;
use model\pro\factory;

class profactoryAction extends elementAction
{
	public function __construct($elename='pro_factory')
    {
		parent::__construct($elename);
	}

	public function list($id = 0)
    {
		$req = \mvc::$req;
		$rules = $this->urlRulesToWhere($req);
		if(isset($req['keys'])){
			$rules['keys'] = explode(',',$req['keys']);
		}
        $factory = new factory();
        $data = $factory->getList($req, $rules);
        $this->successJson($data);
	}

    public function detail($key)
    {
        $req = \mvc::$req;
		//前置条件
		$rules = $this->urlRulesToWhere($req);
        $headerTitle = '添加';
        if($key == '0'){
            $item[$this->elecfg['key']] = 0;
            foreach($this->elecfg['fields'] as $k=> $field){
                if(isset($field['editor']['default'])){
                    $item[$k] = $field['editor']['default'];
                }
            }
        }else{
            $item = $this->element->getRowInfo($key);
            $country =  new country();
            $facArr = $country->getDataCountryId([$item], 'factory');
            $facArr = $country->formatDataCountry($facArr, 1);
            $item = $facArr[0];
            //sale_counids
            $item['captions']['sale_counids'] = $item['sale_coun'];
            $item['sale_counids'] = implode(',',$item['sale_counids']);
            $headerTitle = '编辑';
        }
        if(!empty($this->elecfg['urlFields'])){
            foreach($this->elecfg['urlFields'] as $field){
                if(isset($req[$field])){
                    $item[$field] = $req[$field];
                }elseif(isset($rules[$field])){
                    $item[$field] = $rules[$field];
                }
            }
        }
        \view::set('headerTitle',$headerTitle);
        \view::set('item',$item);
		\view::set('ele',$this->elecfg);
		\view::set('rulesArr',$rules);
		\view::put('element/detail');
    }

    public function saveDetail()
    {
        $req = \mvc::$req;
        $key = $req['key'];
        unset($req['key']);
        unset($req['elename']);
        if(isset($this->elecfg['uniqueFields']) && !empty($this->elecfg['uniqueFields'])){
            $find = [];
            $msg = '';
            foreach($this->elecfg['uniqueFields'] as $field){
                $find[$field] = $req[$field];
                if($msg!='') $msg.=', ';
                $msg .= $this->elecfg['fields'][$field][LG_NAME];
            }
            $find[$this->elecfg['key'].'[!]'] = $key;
            $rows = $this->element->getRowByWhere($find);
            if(!empty($rows)){
                $this->msgJson(sprintf("重复的 [ %s ]",$msg));
                exit();
            }
        }
        foreach($this->elecfg['fields'] as $k=>$v){
            if(isset($v['auto'])){
                switch ($v['auto']) {
                    case 'opuser':
                        $req[$k] = getOpuser();
                        break;
                    case 'oa_create_time':
                        if(empty($key)){
                            $req[$k] = getNowTime();
                        }
                        break;
                    case 'oa_update_time':
                        $req[$k] = getNowTime();
                        break;
                }
            }
        }
        foreach($req as $k=>$v){
            if($this->elecfg['fields'][$k]['unique'] || $this->elecfg['fields'][$k]['key']){
                if($this->element->hasWithOut($k,$v,$key)){
                    $this->msgJson(sprintf("重复的 [ %s ] 在 [ %s ] 中",$v,$this->elecfg['fields'][$k][LG_NAME]));
                    exit();
                }
            }
			if(isset($this->elecfg['fields'][$k]['editor']['ruleFunction']) && !empty($this->elecfg['fields'][$k]['editor']['ruleFunction'])){
				$this->elecfg['fields'][$k]['editor']['ruleFunction']($req[$this->elecfg['fields'][$k]['field']],$req);
			}
        }
        
        if(isset($this->elecfg['fields']['opuser'])) $req['opuser'] = getOpuser();
        if(isset($this->elecfg['fields']['update_time'])) $req['update_time'] = getNowTime();
        $factory  = new factory();
        if(empty($key)){
            if($req[$this->elecfg['key']]=='') unset($req[$this->elecfg['key']]);
            if(isset($this->elecfg['fields']['create_time'])) $req['create_time'] = getNowTime();
           
            $id = $factory->add($req);
            $this->successJson(['key'=>$id,'op'=>'add']);
        }else{
            if($factory->edit($key,$req)){
                $this->successJson(['key'=>$key,'op'=>'edit']);
            }
        }  
    }
}