<?php
namespace admin\action;

use model\pro\supplierPro;

class supplierProAction extends elementAction
{
	public function __construct($elename='supplier_pro')
    {
		parent::__construct($elename);
	}

    public function editCell()
    {
        $req = \mvc::$req;
        $id = $req['id'];
        $oper = $req['oper'];
        $field = $req['field'];
		if(isset($req['value']))
			$value = $req['value'];
 		else
			$value = $req[$field];
        if($oper=='edit' && !empty($field)){
			if(isset($this->elecfg['uniqueFields']) && !empty($this->elecfg['uniqueFields']) && in_array($field,  $this->elecfg['uniqueFields'])){
				if($this->element->hasUnique($id,$field,$value)){
                    exit(lg("重复的记录,保存失败"));
				}
			}
            if($value!='' && $this->elecfg['fields'][$field]['unique'] && !$this->elecfg['fields'][$field]['key']){
                if($this->element->hasWithOut($field,$value,$id)){
                   exit(sprintf("重复的 [ %s ] 在 [ %s ] 中",$value,$this->elecfg['fields'][$field][LG_NAME]));
                }
            }

            $updata = [
                $field=>$value
            ];
            if($field=='spr_number'){
                $updata['spr_format'] = formatNum($value);
            }
          
            if(isset($this->elecfg['fields']['opuser'])){
                $updata[$this->elecfg['fields']['opuser']] = getOpuser();

            }
            if(isset($this->elecfg['fields']['update_time'])){
                $updata[$this->elecfg['fields']['update_time']] = getNowTime();
    
            }
            $this->element->getDb()->update($this->elecfg['table'],$updata,[$this->elecfg['key']=>$id]);

           
        }else{
			$this->errorJson(500);
		}
    }

    public function edit()
    {
        $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,$this->element->getDb());
			}
            if(isset($this->elecfg['fields'][$k]['editor']['formatfield'])){
                $req[$this->elecfg['fields'][$k]['editor']['formatfield']] = formatNum($v);
            }
        }
        
        if(isset($this->elecfg['fields']['opuser'])) $req[$this->elecfg['fields']['opuser']['field']] = getOpuser();
        if(isset($this->elecfg['fields']['update_time'])) $req[$this->elecfg['fields']['update_time']['field']] = getNowTime();
        $supplierPro = new supplierPro('supplier_pro');
        if(empty($key)){
            if($req[$this->elecfg['key']]=='') unset($req[$this->elecfg['key']]);
            if(isset($this->elecfg['fields']['create_time'])) $req[$this->elecfg['fields']['create_time']['field']] = getNowTime();
            $id = $supplierPro->add($req);
            $this->successJson(['key'=>$id,'op'=>'add']);
        }else{
            if($supplierPro->edit($key,$req)){
                $this->successJson(['key'=>$key,'op'=>'edit']);
            }
        }
    }



    public function deleteRows()
    {   
        $req = \mvc::$req;
        $supplierPro = new supplierPro('supplier_pro');
        if($supplierPro->deleteRows($req['ids'])){
            $this->successJson(lg('删除完成'));
        }
       
    }

    public function log()
    {
        $req = \mvc::$req;
		\view::set('req',$req);
		\view::put();
    }

    public function getListLog()
    {
        $req = \mvc::$req;
		$rules = $this->urlRulesToWhere($req);
        $supplierPro = new supplierPro('supplier_pro');
        $data = $supplierPro->getListLog($req,$rules);
        $this->successJson($data);

    }

}