<?php
class Order_BatchuploadsnController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "order/views/default/";
        $this->serviceClass = new Service_Orders();
    }
	/*批量上传*/
    public function indexAction()
    {       
	    echo Ec::renderTpl($this->tplDirectory . "uploadsn.tpl", 'layout');
    }
    /*模板下载*/
	public function importTempleteAction(){
	
		$fullPath = APPLICATION_PATH."/../data/xls".'/sample_for_service_number.xls';
    	//方法2
    	$filename = basename($fullPath);
    	header("Content-Type: APPLICATION/OCTET-STREAM");
    	//Force the download
    	$header="Content-Disposition: attachment; filename=".$filename.";";
    	header($header );
    	// 	header("Content-Transfer-Encoding: binary");
    	// 	header("Content-Length: ".$len);
    	echo file_get_contents($fullPath);
    	exit;	
	
	}
	/*导入*/
	public function importAction(){	
		
        $xlsData = Service_SmCustomerMap::getXLSData($_FILES,'filename');
		$message = "全部上传成功";
		
		
		
		if($xlsData['ask']=='0'){
			$message = "上传文件失败";		
		}elseif(count($xlsData[0])!=3 ||($xlsData[0][0]!="仓库ID"||$xlsData[0][1]!="服务商单号"||$xlsData[0][2]!="运输方式")){
           
            $message = "标题必须按仓库ID,服务商单号,运输方式,顺序排列!";
            
        }elseif(count($xlsData)<=1){
			$message = "没有数据!";
		}else{
			
			$i = 1;
			$stn_add_time = $stn_update_time = date('Y-m-d H:i:s');
			$stn_status = 0;			
			$errorData = array();
			foreach($xlsData as $key=>$value){
            	if($key==0) continue;
				$warehouse_code =  trim($value[0]);
				$tracking_number = trim($value[1]);
				$sm_code = trim($value[2]);
				
				if(empty($warehouse_code)){
					$value['error_line'] = $i;
					$value['is_valid'] = 0;
					$value['errormsg'] = '仓库ID必须填写';
					$errorData[] = $value;
					$i++;
					continue;
				}else{				
						$warehouse = Service_Warehouse::getByField($warehouse_code,'warehouse_code');
						if(empty($warehouse)){
							$value['error_line'] = $i;
							$value['is_valid'] = 0;
							$value['errormsg'] = '找不到仓库信息';
							$errorData[] = $value;
							$i++;
							continue;
						}				
				}//仓库检验完毕
				
				if(empty($tracking_number)){
							$value['error_line'] = $i;
							$value['is_valid'] = 0;
							$value['errormsg'] = '服务商单号必须填写';
							$errorData[] = $value;
							$i++;
							continue;
				}else{
				
					  $isExistent = Service_ServiceTrackingNumber::getByField($tracking_number,'stn_code');
					  if($isExistent){
					  		$value['error_line'] = $i;
							$value['is_valid'] = 0;
							$value['errormsg'] = '服务商单号发生重复';
							$errorData[] = $value;
							$i++;
							continue;			  
					  
					  }	
				
				}
				
				
				if(empty($sm_code)){	
							$value['error_line'] = $i;				
							$value['is_valid'] = 0;
							$value['errormsg'] = '运输方式必须填写';
							$errorData[] = $value;
							$i++;
							continue;				
				}else{
					$shippingMethod = Service_ShippingMethod::getByField($sm_code,'sm_code');
					if(empty($shippingMethod)){
							$value['error_line'] = $i;					
							$value['is_valid'] = 0;
							$value['errormsg'] = '运输方式不存在';
							$errorData[] = $value;
							$i++;
							continue;					
					}			
				}			
				
				$data = array();
				$data['warehouse_id'] = $warehouse['warehouse_id'];
				$data['stn_code'] = $tracking_number;
				$data['sm_code'] = $sm_code;
				$data['stn_status'] = $stn_status;
				$data['stn_add_time'] = $stn_add_time;
				$data['stn_update_time'] = $stn_update_time;				
				$status = Service_ServiceTrackingNumber::add($data);			
				if(empty($status)){				
							$value['error_line'] = $i;
							$value['is_valid'] = 0;
							$value['errormsg'] = '插入数据失败(系统错误)';
							$errorData[] = $value;
							$i++;
							continue;				
				}	
			
				$i++;
			}//foreach
			
			if($errorData){				
				$message = '您提交了'.(count($xlsData)-1).'行数据,其中'.count($errorData).'行数据上传失败';
			}else{
				$message = '您提交了'.(count($xlsData)-1).'行数据';
			}
			$this->view->errorData = $errorData;
		}//if(count($xlsData[0])!=3 ||
		 
		 
		 $this->view->message = $message;	 
		 echo Ec::renderTpl($this->tplDirectory . "uploadsn.tpl", 'layout');
	
	}
   




}