<?php

//
// Stone大叔💯 
// ============================================================================
// ----------------------------------------------------------------------------
// <><><><><><><><><><><><><>有妹子加微信不哦！~<><><><><><><><><><><><><><><><>
// ----------------------------------------------------------------------------
// ============================================================================
// $Author: Stone大叔💯 $
// $Z Stone大叔💯 $
//

class Exception_ExceptionTypeController extends Ec_Controller_Action{
    
    public function preDispatch()
    {
        $this->tplDirectory = "exception/views/exception_type/";
        $this->serviceClass = new Service_ExceptionType();
        $this->serviceByUserClass    =   new Service_ExceptionTypeUserPosition();
    }
    
    public function listAction() {
        
        $typeModel  =   $this->serviceClass->_typeModel();
        
        
        if ($this->_request->isPost()){
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);
            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $condition   =   array(
                    'et_code'   =>  $this->_request->getParam('et_code',''),
                    'et_model'  =>  $this->_request->getParam('et_model',''),
                    'et_status'    =>  $this->_request->getParam('et_status',''),
                    'like_et_name'   =>  $this->_request->getParam('like_et_name','')  
            );            
            $count  =   $this->serviceClass->getJoinUserPositionByCondition($condition,"count(*)");
            $return['total'] = $count;
            if ($count){
                $rows   =   $this->serviceClass->getJoinUserPositionByCondition($condition,"*",$pageSize,$page,'et_id desc');
                foreach($rows AS $key=>$row){                    
                    $userPosition   = Service_UserPosition::getByField($row['up_id']);
                    $rows[$key]['userInfo'] =   $userPosition['up_name'];
                    if($row['user_id'] > 0){
                        $user   =  Service_User::getByField($row['user_id']);
                        $rows[$key]['userInfo'] .=  "/{$user['user_name']}";
                    }
                    $rows[$key]['et_model'] =   isset($typeModel[$row['et_model']]) ? $typeModel[$row['et_model']]['name'] : '未知';
                    $rows[$key]['et_status']    =   ($row['et_status'] == 0) ? '未启用' : '启用'; 
                    $rows[$key]['et_auto']    =   ($row['et_auto'] == 0) ? '计划任务' : '程序运行'; 
                }
                $return['data'] = $rows;
                $return['state'] = 1;
            }
            die(Zend_Json::encode($return));
        }
        $this->view->model  =   $typeModel;      
        $userPosition   =   new Service_UserPosition();
        $this->view->userPosition   =   $userPosition->getAll();
        echo Ec::renderTpl($this->tplDirectory . "index.tpl", 'layout');
    }
    
    public function editAction() {
        $return = array(
            'state' => 0,
            'message' => '',
            'errorMessage' => array('Fail.')
        );
        try{
            if (!$this->_request->isPost()){
                throw new Zend_Controller_Dispatcher_Exception('The data is NULL');
            }   
            
            $data   =   array(
                    'et_code'   =>  $this->_request->getParam('et_code',''),
                    'et_model'  =>  $this->_request->getParam('et_model',''),
                    'et_msg'    =>  $this->_request->getParam('et_msg',''),
                    'et_name'   =>  $this->_request->getParam('et_name',''),
                    'et_status' =>  $this->_request->getParam('et_status',''),
                    'up_id'     =>  $this->_request->getParam('up_id',''),    
                    'user_id'   =>  $this->_request->getParam('user_id',''),
                    'et_auto'   =>  $this->_request->getParam('et_auto' , ''),
                    'execute_time'  =>  $this->_request->getParam('execute_time' , ''),
            );
            $et_id  =   $this->_request->getParam('et_id','');  
            
            if($et_id == ''){//添加
                //验证
                $error1 = $this->serviceClass->validator($data);
                $error2 =   $this->serviceByUserClass->validator($data);
                if(!empty($error1) || !empty($error2)){                    
                    $return['errorMessage'] =   $error1 ? $error1 : $error2;
                    die(Zend_Json::encode($return));
                }                    
                $et_id   =   $this->serviceClass->add(array(
                    'et_status' =>  $data['et_status'],
                    'et_model'  =>  $data['et_model'],
                    'et_code'   =>  $data['et_code'],
                    'et_msg'    =>  $data['et_msg'],
                    'et_name'   =>  $data['et_name'],
                    'et_auto'   =>  $data['et_auto'],
                    'execute_time'  =>  $data['execute_time']
                ));

                if(!$et_id){
                    throw new Zend_Controller_Dispatcher_Exception('Unknown error');
                }

                
            }else{//修改
                $error1 = $this->serviceClass->validator($data , 'edit');
                $error2 =   $this->serviceByUserClass->validator($data);
                if(!empty($error1) || !empty($error2)){
                    $return['errorMessage'] =   $error1 ? $error1 : $error2;
                    die(Zend_Json::encode($return));
                }
                
                $updateRow   =   $this->serviceClass->update(array(
                    'et_status' =>  $data['et_status'],
                    'et_model'  =>  $data['et_model'],
                    'et_code'   =>  $data['et_code'],
                    'et_msg'    =>  $data['et_msg'],
                    'et_name'   =>  $data['et_name'],
                    'et_auto'   =>  $data['et_auto'],
                    'execute_time'  =>  $data['execute_time']
                ),$et_id);

                if($updateRow === false){
                    throw new Zend_Controller_Dispatcher_Exception('Unknown error');
                }                
                $this->serviceByUserClass->delete($et_id , 'et_id');
            }
            
            $eup_id =   $this->serviceByUserClass->add(array(
                'et_id' => $et_id,
                'up_id' =>  $data['up_id'],
                'user_id'   =>  $data['user_id']
            ));

            if(!$eup_id){
                throw new Zend_Controller_Dispatcher_Exception('Unknown error');
            }
                
            $return['state'] = 1;
            $return['message'] = array('Success.');           
        }catch (Exception $exc) {
            $return['errorMessage'] =   array($exc->getMessage());
        }
        die(Zend_Json::encode($return));
    }
    
    public function getByJsonAction() {
        $et_id  =   $this->_request->getParam('paramId',0);
        $return = array(
                "state" => 0,
                "message" => "No Data"
            );
        if($et_id > 0){
            $row  =   $this->serviceClass->getjoinUserPositionByField($et_id);
            $return['state']    =   1;
            $return['data'] =   $row;
        }
        die(Zend_Json::encode($return));
    }
    
//    public function deleteAction() {
//        $et_id  =   $this->_request->getParam('paramId',0);
//        $return = array(
//                "state" => 0,
//                "message" => "No Data"
//            );
//    }
    
    public function getUserByUserPositionAction() {
        
        if ($this->_request->isPost()){
            $return =   array();
            $up_id  =   (int)$this->_request->getParam('up_id',0);
            
            if($up_id <= 0){
                die(Zend_Json::encode($return));
            }
            
            $return =   Service_User::getByCondition(array(
                'up_id'=>$up_id,
                'user_status'   =>  1
            ),array(
                'user_id',
                'user_name',
                'user_name_en'
            ));
            
            die(Zend_Json::encode($return));
        }
    }
    
    
    
    
    
    
  
}
