<?php
class Service_Orders extends Common_Service
{
    /**
     * @var null
     */
    public static $_modelClass = null;

    /**
     * @return Table_Orders|null
     */
    public static function getModelInstance()
    {
        if (is_null(self::$_modelClass)) {
            self::$_modelClass = new Table_Orders();
        }
        return self::$_modelClass;
    }

    /**
     * @param $row
     * @return mixed
     */
    public static function add($row)
    {
        $model = self::getModelInstance();
        return $model->add($row);
    }


    /**
     * @param $row
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function update($row, $value, $field = "order_id")
    {
        $model = self::getModelInstance();
        return $model->update($row, $value, $field);
    }
    
    /**
     * @param $row
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function updateIn($row, $values, $field = "order_code")
    {
    	$model = self::getModelInstance();
    	return $model->updateIn($row, $values, $field);
    }

    /**
     * @param $value
     * @param string $field
     * @return mixed
     */
    public static function delete($value, $field = "order_id")
    {
        $model = self::getModelInstance();
        return $model->delete($value, $field);
    }

    /**
     * @param $value
     * @param string $field
     * @param string $colums
     * @return mixed
     */
    public static function getByField($value, $field = 'order_id', $colums = "*")
    {
        $model = self::getModelInstance();
        return $model->getByField($value, $field, $colums);
    }

    /**
     * @return mixed
     */
    public static function getAll()
    {
        $model = self::getModelInstance();
        return $model->getAll();
    }

    /**
     * @param array $condition
     * @param string $type
     * @param int $pageSize
     * @param int $page
     * @param string $order
     * @return mixed
     */
    public static function getByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getByCondition($condition, $type, $pageSize, $page, $order);
    }

    public static function getShipmentByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
    	$model = self::getModelInstance();
    	return $model->getShipmentByCondition($condition, $type, $pageSize, $page, $order);
    }

    public static function getShipmentInnerJoinProductByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
    	$model = self::getModelInstance();
    	return $model->getShipmentInnerJoinProductByCondition($condition, $type, $pageSize, $page, $order);
    }

    /**
     * @desc 订单查询列表
     */
    public static function getOrderInnerJoinProductByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getOrderInnerJoinProductByCondition($condition, $type, $pageSize, $page, $order);
    }
    
    /*
     * @订单全部表信息
     * @LeftJoin 订单-对一的表
     */
    public static function getLeftJoinAllByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getLeftJoinAllByCondition($condition, $type, $pageSize, $page, $order);
    }
    
    /**
     * 计算订单的重量
     * @param string $order_code
     */
    public static function calculateWeight($order_code){
    	$model = self::getModelInstance();
    	return $model->calculateWeight($order_code);
    }

    /**
     * @param $val
     * @return array
     */
    public static function validator($val)
    {
        $validateArr = $error = array();
        
        return  Common_Validator::formValidator($validateArr);
    }


    /**
     * @param array $params
     * @return array
     */
    public  function getFields()
    {
        $row = array(
        
              'E0'=>'order_id',
              'E1'=>'order_code',
              'E2'=>'customer_id',
              'E3'=>'customer_code',
              'E4'=>'warehouse_id',
              'E5'=>'order_type',
              'E7'=>'sm_code',
              'E8'=>'parcel_declared_value',
              'E9'=>'parcel_contents',
              'E10'=>'parcel_quantity',
              'E11'=>'order_status',
              'E12'=>'problem_status',
              'E13'=>'underreview_status',
              'E14'=>'add_time',
              'E15'=>'update_time',
              'E16'=>'order_pick_type',
              'E17'=>'reference_no',
              'E18'=>'picker_id',
              'E19'=>'remark',
              'E20'=>'intercept_status',
			  'E21'=>'order_mode_type',
              'E22'=>'ref_tracking_number',
              'E23'=>'platform',
              'E24'=>'tracking_status',
              'E25'=>'is_fba',
              'E26'=>'track_status',
	          'E27'=>'insurance',
              'E28'=>'insurance_code',
              'E29'=>'insurance_rate',
        );
        return $row;
    }
	/*获取订单状态*/
	public static function getStatusText($status){
		$statusText = '未知';
		switch($status){
			case '0':
				$statusText = '删除';
			break;
			case '1':
				$statusText = '草稿';
			break;
			case '2':
				$statusText = '确认';
			break;	
			case '3':
				$statusText = '异常';
			break;			
			case '4':
				$statusText = '已提交';
			break;									
			case '5':
				$statusText = '已打印';
			break;			
			case '6':
				$statusText = '已下架';
			break;		
			case '7':
				$statusText = '已打包';
			break;	
			case '8':
				$statusText = '已装袋';
			break;
			case '9':
				$statusText = '装袋完成';
			break;
			case '10':
				$statusText = '已加挂';
			break;			
			case '11':
				$statusText = '物流完成';
			break;			
			case '12':
				$statusText = '物流发货';
			break;
			case '13':
				$statusText = '已签收';
			break;						
            case '14':
				$statusText = '已录单';
			break;
			}
			
			return $statusText;
	
	}
	/**
	 * 统计订单的HsCode数量
	 * @author solar
	 * @param string $order_code
	 * @return int
	 */
	public static function countHsCode($order_code) {
		$model = new Table_Orders();
		return $model->countHsCode($order_code);
	}
    public static function getEubOrderByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = "")
    {
        $model = self::getModelInstance();
        return $model->getEubOrderByCondition($condition, $type, $pageSize, $page, $order);
        //return $model->getByCondition($condition, $type, $pageSize, $page, $order);
    }
    public static function getUktlOrderByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = ""){
        $model = self::getModelInstance();
        return $model->getUktlOrderByCondition($condition, $type, $pageSize, $page, $order);
    }
    public static function getEtkOrderByCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = ""){
        $model = self::getModelInstance();
        return $model->getEtkOrderByCondition($condition, $type, $pageSize, $page, $order);
    }
    public static function getInnerJionShiporderCondition($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = ""){
        $model = self::getModelInstance();
        return $model->getInnerJionShiporderCondition($condition, $type, $pageSize, $page, $order);
    }
  public static function getOrderByProduct($condition = array(), $type = '*', $pageSize = 0, $page = 1, $order = ""){
        $model = self::getModelInstance();
        return $model->getOrderByProduct($condition, $type, $pageSize, $page, $order);
    }
    public static function getXLSData($uploadFile,$field){
        $customerAuth = new Zend_Session_Namespace("customerAuth");

        $customer   = $customerAuth->data;
        $customerId = $customer['id'];
        //print_r($customer);
        //exit('sss');
        $path = APPLICATION_PATH.'/../data/orderupload/';
        $path.= $customerId;
        if(!file_exists($path)){
            if(!mkdir($path,0700,true)){
                $result = array("ask"=>0,"message"=>"上传文件失败失败",'error'=>array('上传目录不存在创建文件目录失败'));
                return $result;
            }
        }
        $config = array();
        $config['upload_path']      = $path;
        $config['allowed_types']    = 'xls|xlsx|csv';
        $config['max_size']         = '10000';
        $config['encrypt_name']     = true;
        $upload = new Common_UploadFile($config);
        $upload->set_upload_path($path);
        if ( ! $upload->do_upload($_FILES,$field) ){
            $result['ask'] = '0';
            $result['message'] = '上传文件失败';
            $result['error'] =  $upload->display_errors();
            return $result;
            exit;
        }

        $resultArray = $upload->data();
        $full_path = $resultArray['full_path'];
        if(empty($resultArray) || empty($full_path)){
            $result = array("ask"=>0,"message"=>"上传文件失败失败",'error'=>array('数据不存在'));
            return $result;
            exit;
        }
        switch($resultArray['file_ext']){
            case ".xls":
            case ".xlsx":
                $resultArray = Common_Upload::readEXCEL($full_path);
                break;
            case ".csv":
                $resultArray = Common_Upload::readCSV($full_path);
                break;
            default:
                $resultArray = array();
                break;
        }
        if(empty($resultArray) || !is_array($resultArray)){
            $result = array("ask"=>0,"message"=>"文件内容不符合格式或数据为空.",'error'=>array());
            //echo json_encode($result);
            //exit;
        }
        @unlink($full_path);
        return $resultArray;
    }

}