<?php
class Validate_PreDataValidate{
    public $injectObject;
    public function __construct($injectObject)
    {
        $this->injectObject = $injectObject;
    }
    public function setInjectObjectError($error){
        if(!empty($error)){
            if(property_exists($this->injectObject,'error')){
                $error_old = $this->injectObject->getError();
                $error_now = array_merge($error_old,$error);
                $this->injectObject->setError($error_now);
                //$this->injectObject->error = array_merge($this->injectObject->error,$error);
            }
        }
    }
    /**
     * @todo 校验业务类型
     */
    public function validatetype($type){
        $error = [];
        if(!empty($type)){
            $formTypes = Common_SelectMap::getEformType();
            $typesValue = array_column($formTypes,'form_type');
            if(!in_array($type,$typesValue)){
                $error[] = "业务类型错误-->".$type;
            }
        }else{
            $error[] = "业务类型必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验search_type
     */
    public function validateSearchType($value){
        $error = [];
        if(!empty($value)){
            $types = ['sb_code','order_code'];
            if(!in_array($value,$types)){
                $error[] = "关联单号类型-->".$types;
            }
        }else{
            $error[] = "关联单号类型必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验codlist
     */
    public function validatecodlist($value){
        $error = [];
        if(!empty($value)){
            //单号的有效性校验
        }else{
            $error[] = "关联单号必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验境内发货人
     */
    public function validaterltEntryBizopEtpsNm($value){
        $error = [];
        if(empty($value)){
            $error[] = "境内发货人必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验境内发货地
     */
    public function validatedistrictCode($value){
        $error = [];
        if(empty($value)){
            $error[] = "境内货源地必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验征免性质
     */
    public function validatedutyMode($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $types = ['1','3'];
            if(!in_array($value,$types)){
                $error[] = "征免性质无效-->".$value;
            }
        }else{
            $error[] = "征免性质必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * 校验贸易国（地区）：
     */
    public function validateTradeAreaCode($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $c = Service_Country::getByField($value,'trade_country');
            if(empty($c)){
                $error[] = "贸易国（地区）无效-->".$value;
            }
        }else{
            $error[] = "贸易国（地区）必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo
     */
    public function validatedestinationPort($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $c = Service_PortCode::getByField($value,'port_code');
            if(empty($c)){
                $error[] = "指运港无效-->".$value;
            }
        }else{
            $error[] = "指运港必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验离境口岸
     */
    public function validatentyPortCode($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $c = Service_PortCodeInternal::getByField($value,'pci_code');
            if(empty($c)){
                $error[] = "离境口岸无效-->".$value;
            }
        }else{
            $error[] = "离境口岸必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验包装
     */
    public function validatewrapType($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $c = Service_WrapType::getByField($value,'wrap_type');
            if(empty($c)){
                $error[] = "包装种类无效-->".$value;
            }
        }else{
            $error[] = "包装种类必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * todo
     */
    public function validatebgCompany($value){
        $error = [];
        if(!empty($value)){
            //有效性校验
            $c = Service_BgCompany::getByField($value,'company_code');
            if(empty($c)){
                $error[] = "报关配置无效-->".$value;
            }
        }else{
            $error[] = "报关配置必填";
        }
        $this->setInjectObjectError($error);
        return $error;
    }
    /**
     * @todo 校验所有的
     */
    public function validateAll($functions){

    }

}