<?php
/**
 * Created by JetBrains PhpStorm.
 * User: user
 * Date: 14-11-3
 * Time: 下午5:35
 * To change this template use File | Settings | File Templates.
 */
class Auth_OmsSubMenuController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "auth/views/permission/";
        $this->serviceClass = new Service_AccountPrivilege();
    }

    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->getMatchFields($params);
            $condition = array();
            $condition['privilege_name'] = $this->_request->getParam("privilege_name","");

            $count = Service_AccountPrivilege::getByCondition($condition,"count(*)");
            $return['total'] = $count;

            if($count){

                $rows = Service_AccountPrivilege::getByCondition($condition, "*", $pageSize, $page, array('privilege_id asc'));
                foreach($rows as $key=>$value){
                    $modules = Service_AccountPrivilegeModule::getByField($value['module_id'],"module_id","*");
                    $rows[$key]['module_name'] = $modules['module_name'];
                }
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['message'] = "";
            }
            die(Zend_Json::encode($return));
        }
        $this->view->AllModule = Service_AccountPrivilegeModule::getAll();
        echo Ec::renderTpl($this->tplDirectory . "oms-sub-menu-list.tpl", 'layout');
    }

    public function editAction(){
        $return = array(
            'state' => 0,
            'message' => '',
            'errorMessage' => array('Fail.')
        );

        if ($this->_request->isPost()) {
            //$params = $this->_request->getParams();
            $row = array(

                'privilege_name' =>$this->_request->getParam("privilege_name",""),
                'privilege_name_en' =>$this->_request->getParam("privilege_name_en",""),
                'privilege_description' =>$this->_request->getParam("privilege_description",""),
                'privilege_slug' =>$this->_request->getParam("privilege_slug",""),
                'privilege_link' =>$this->_request->getParam("privilege_link",""),
                'to_show' =>$this->_request->getParam("to_show","1"),
                'to_assign' =>$this->_request->getParam("to_assign",""),
                'to_admin' =>$this->_request->getParam("to_admin","0"),
                "module_id"=>$this->_request->getParam("module_id",""),
                'sort_id' =>$this->_request->getParam("sort_id",""),
            );
            $paramId = $this->_request->getParam("privilege_id","");

            $errorArr = $this->serviceClass->validator($row);

            if (!empty($errorArr)) {
                $return = array(
                    'state' => 0,
                    'message' => '',
                    'errorMessage' => $errorArr
                );
                die(Zend_Json::encode($return));
            }

            if (!empty($paramId)) {
                $result = $this->serviceClass->update($row, $paramId);
            } else {
                $result = $this->serviceClass->add($row);
            }
            if ($result) {
                $return['state'] = 1;
                $return['message'] = array('Success.');
            }

        }
        die(Zend_Json::encode($return));
    }

    public function getByJsonAction()
    {
        $result = array('state' => 0, 'message' => 'Fail', 'data' => array());
        $paramId = $this->_request->getParam('paramId', '');
        if (!empty($paramId) && $rows = Service_AccountPrivilege::getByField($paramId, 'privilege_id')) {
            //$rows = $this->serviceClass->getVirtualFields($rows);
            $result = array('state' => 1, 'message' => '', 'data' => $rows);
        }
        die(Zend_Json::encode($result));
    }

    public function deleteAction()
    {
        $result = array(
            "state" => 0,
            "message" => "Fail."
        );
        if ($this->_request->isPost()) {
            $paramId = $this->_request->getPost('paramId');
            if (!empty($paramId)) {
                if (Service_AccountPrivilege::delete($paramId)) {
                    $result['state'] = 1;
                    $result['message'] = 'Success.';
                }
            }
            die(Zend_Json::encode($result));
        }
    }
}
