<?php
/**
* @author [felix-tang] <[<email address>]>
* @todo [订单客服跟踪信息 2015/11/24]
*/
class Order_OrderTrackingInfoController extends Ec_Controller_Action{
	public function preDispatch(){
        $this->tplDirectory = "order/views/default/";
        $this->serviceClass = new Service_OrderTrackingInfo();
    }

    public function listAction(){
        if ($this->_request->isPost()){
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);

            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;

            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $params = $this->_request->getParams();
            //$condition = $this->serviceClass->getNewMatchFields($params);
            $condition = array(
                'user_id'=>$params['user_id'],
                'oti_status'=>$params['oti_status'],
                'order_code'=>$params['order_code'],
                'sm_code'=>$params['sm_code'],
                'customer_code'=>$params['customer_code'],
                'dateFor'=>$params['dateFor'],
                'dateTo'=>$params['dateTo'],
            );
            $count = Service_OrderTrackingInfo::getByCondition($condition,'count(*)');
            $trackingStatus=Common_Status::trackingStatus('auto');
            $return['total'] = $count;
            if($count){
                $info = Service_OrderTrackingInfo::getByCondition($condition,'*',$pageSize,$page,'create_time desc');
                $users = Service_User::getAll();
                foreach ($users as $key => $value) {
                    $user[$value['user_id']] = $value['user_name'];
                }
                unset($users);
                foreach ($info as $key => $value) {
                    $info[$key]['user_name'] = $user[$value['user_id']] ? $user[$value['user_id']] : $value['user_id'];
                    $info[$key]['tracking_status']=$trackingStatus[$value['oti_status']];
                }
                $return['state'] = 1;
                $return['data'] = $info;
            }
            die(Zend_Json::encode($return));
        }
        $this->view->SM=Common_DataCache::getShippingMethodSimple();
        $this->view->user = Service_User::getAll();
        $this->view->trackingStatus=Common_Status::trackingStatus('auto');
        echo Ec::renderTpl($this->tplDirectory . "orders_tracking_info_index.tpl", 'layout');
    }

   	/**
   	 * [addAction 添加信息]
   	 */
    public function addAction(){
    	$return = array(
    		'status' => 0,
    		'msg' => array(),
    		'data' => '',
    		);
    	if($this->_request->isPost()){
    		$params = $this->_request->getParams();
    		$value = $this->serviceClass->getMatchFields($params);
    		$error = $this->check($value);
    		if(!empty($error)){
    			$return['msg'] = $error;
    			die(Zend_Json::encode($return));
    		}
    		if(!$value['order_id']){
    			$return['msg'][] = '订单号不存在！';
    			die(Zend_Json::encode($return));
    		}
            if (!isset($params['tracking_status'])||$params['tracking_status']==="") {
                $return['msg'][] = '异常状态必选！';
                die(Zend_Json::encode($return));
            }
            $upOrder=array(
                'order_id'=>$value['order_id'],
                'tracking_status' => $params['tracking_status'], 
                );
            Service_Orders::update($upOrder,$value['order_id'],'order_id');
            $orderRow = Service_Orders::getByField($value['order_id'],'order_id',"*");
        	$value['user_id'] = $this->_userAuth->userId;
        	$value['create_time'] = date('Y-m-d H:i:s',time());
            $value['oti_status'] = $params['tracking_status'];
            $value['order_code'] = $orderRow['order_code'];
            $value['sm_code'] = $orderRow['sm_code'];
            $value['customer_code'] = $orderRow['customer_code'];
        	$result = $this->serviceClass->add($value);
        	if($result){
        		$return['status'] = 1;
        		$return['msg'][] = '成功！';
        	}
        	die(Zend_Json::encode($return));
    	}else{
    		$return['msg'][] = '请求方式不正确！';
    		die(Zend_Json::encode($return));
    	}
    }
    /**
     * [check 验证数据]
     * @param  [type] $data [description]
     * @return [type]       [description]
     */
    private function check($data){
    	$error = array();
    	if(mb_strlen($data['comment'])>500 || $data['comment'] == ''){
    		$error[] = '字数限制500个以内，不能为空！';
    	}
    	return $error;
    }
    public function getListAction(){
        $page        = $this->_request->getParam('page',1);
        $pageSize    = $this->_request->getParam('pageSize',10);
        $page = $page ? $page : 1;
        $pageSize = $pageSize ? $pageSize : 10;
        $pageSize = min($pageSize,1000);
        $order_id = $this->_request->getParam("order_id","");
        $count = Service_OrderTrackingInfo::getByCondition(array('order_id'=>$order_id),'count(*)');
        if($count){
            $info = Service_OrderTrackingInfo::getByCondition(array('order_id'=>$order_id),'*',$pageSize,$page,'create_time desc');
	        $users = Service_User::getAll();
	        foreach ($users as $key => $value) {
	            $user[$value['user_id']] = $value['user_name'];
	        }
	        unset($users);
            $trackingStatus=Common_Status::trackingStatus('auto');
	        foreach ($info as $key => $value) {
	            $info[$key]['user_name'] = $user[$value['user_id']] ? $user[$value['user_id']] : $value['user_id'];
                $info[$key]['tracking_status']=$trackingStatus[$value['tracking_status']];
	        }
            $result = array(
	            'url'=>$_SERVER['REQUEST_URI'],
	            'page'=>$page,
	            'pageSize'=>$pageSize,
	            'total'=>$count,
	            'data'=>$info
            );
        }else{
            $info = '';
        }
        $result = array(
            'url'=>$_SERVER['REQUEST_URI'],
            'page'=>$page,
            'pageSize'=>$pageSize,
            'total'=>$count,
            'data'=>$info
        );
        die(json_encode($result));
    }

    public function exportAction(){

        set_time_limit(0);
        ini_set('memory_limit', '1024M');
        $file   = 'orderTrackingInfo' . date('YmdHis') . '.csv';
        header('Content-Type: application/vnd.ms-excel;charset=gbk');
        header("Content-Disposition: attachment;filename={$file}");
        header('Cache-Control: max-age=0');
        $exportData[0] = array('订单号','运输代码','客户代码','异常状态','信息','操作人','创建时间');

        $params        = $this->getRequest()->getParams();
        //var_dump($params);
        //exit;
        $trackingStatus=Common_Status::trackingStatus('auto');
        if($params['type'] == '1'){
            $condition = array(
                'user_id'=>$params['user_id'],
                'oti_status'=>$params['oti_status'],
                'order_code'=>$params['order_code'],
                'sm_code'=>$params['sm_code'],
                'customer_code'=>$params['customer_code'],
                'dateFor'=>$params['dateFor'],
                'dateTo'=>$params['dateTo'],
            );
            $count = Service_OrderTrackingInfo::getByCondition($condition,'count(*)');
            $index = 1;
            $pagesize = 20;
            $pages = ceil($count / $pagesize);
            for ($page=1; $page <= $pages; $page++){
                $info = Service_OrderTrackingInfo::getByCondition($condition,'*',$pagesize,$page,'create_time desc');
                foreach ($info as $key => $value) {
                    $exportData[$index][]=$value['order_code'];
                    $exportData[$index][]=$value['sm_code'];
                    $exportData[$index][]=$value['customer_code'];
                    $exportData[$index][]=$trackingStatus[$value['oti_status']];
                    $exportData[$index][]=$value['comment'];
                    $userRow = Service_User::getByField($value['user_id'],"user_id","*");
                    $exportData[$index][]=$userRow['user_name'];
                    $exportData[$index][]=$value['create_time'];
                    //$info[$key]['user_name'] = $user[$value['user_id']] ? $user[$value['user_id']] : $value['user_id'];
                    //$info[$key]['tracking_status']=$trackingStatus[$value['oti_status']];
                    $index++;
                }
            }
        }else{
            if ($params['oti_id']){
                $idArr  =  explode('|', $params['oti_id']);
                $index=1;
                //var_dump($idArr);
                foreach($idArr as $value){
                    if($value=="") continue;
                    $Info = Service_OrderTrackingInfo::getByField($value,'oti_id',"*");
                    $exportData[$index][]=$Info['order_code'];
                    $exportData[$index][]=$Info['sm_code'];
                    $exportData[$index][]=$Info['customer_code'];
                    $exportData[$index][]=$trackingStatus[$Info['oti_status']];
                    $exportData[$index][]=$Info['comment'];
                    $userRow = Service_User::getByField($Info['user_id'],"user_id","*");
                    $exportData[$index][]=$userRow['user_name'];
                    $exportData[$index][]=$Info['create_time'];
                    $index++;
                }
            }
        }
        //var_dump($exportData);
        echo Common_Export::exportCsvForNotKey($exportData);
        exit();
    }
}