<?php


namespace app\admin\controller;


use app\admin\logic\AuthLogic;
use think\facade\Hook;
use think\facade\Url;

class Auth extends AdminBase
{
    /**
     * 菜单列表
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function lists()
    {
        $lists = json_encode(AuthLogic::lists());
        $this->assign('lists', $lists);
        return $this->fetch();
    }

    /**
     * 添加菜单
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function add()
    {
        if ($this->request->isAjax()) {
            $post = $this->request->post();
            $post['disable'] = isset($post['disable']) && $post['disable'] == 'on' ? 0 : 1;
            $result = $this->validate($post, 'app\admin\validate\Auth');
            if ($result === true) {
                $result = AuthLogic::addMenu($post);
                if (!is_string($result)) {
                    $this->_success('添加成功');
                } else {
                    $this->_error($result);
                }
            }
            $this->_error($result);
        }
        $this->assign('menu_lists', AuthLogic::chooseMenu());
        return $this->fetch();
    }

    /**
     * 编辑菜单
     * @param $id
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function edit($id)
    {
        if ($this->request->isAjax()) {
            $post = $this->request->post();
            $post['disable'] = isset($post['disable']) && $post['disable'] == 'on' ? 0 : 1;
            $result = $this->validate($post, 'app\admin\validate\Auth');
            if ($result === true) {
                $result = AuthLogic::updateMenu($post);
                if (!is_string($result)) {
                    $this->_success('修改成功');
                } else {
                    $this->_error($result);
                }
            }
            $this->_error($result);
        }
        $this->assign('info', AuthLogic::info($id));
        $this->assign('menu_lists', AuthLogic::chooseMenu($id));
        return $this->fetch();
    }

    /**
     * 设置状态
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function status()
    {
        if ($this->request->isAjax()) {
            $post = $this->request->post();
            AuthLogic::setStatus($post);
            Hook::listen('menu_auth');
            $this->_success('修改成功');
        }
    }


    /**
     * 删除菜单
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function del()
    {
        if ($this->request->isAjax()) {
            $post = $this->request->post();
            if (empty($post['ids'])) {
                $this->_error('删除失败');
            }
            AuthLogic::delMenu($post['ids']);
            Hook::listen('menu_auth');
            $this->_success('删除成功');
        }
    }
     /**
     * 获取员工所有权限
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */ 
    public function stafflists(){
        $lists = json_encode(AuthLogic::stafflists());
        $this->assign('lists', $lists);
        return $this->fetch();
    }
     /**
     * 增加员工权限
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */ 
    public function add_staffauth(){
        if ($this->request->isAjax()) {
             $post = $this->request->post();
             $post['disable'] = isset($post['disable']) && $post['disable'] == 'on' ? 0 : 1;
             $result = AuthLogic::add_staffauth($post);
             $this->_success('修改成功');
        }
        $this->assign('menu_lists', AuthLogic::staffchooseMenu());
        return $this->fetch();
    }
    /**
     * 修改员工权限
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */ 
     
     public function edit_staffauth($id){
        if ($this->request->isAjax()) {
             $post = $this->request->post();
             $post['disable'] = isset($post['disable']) && $post['disable'] == 'on' ? 0 : 1;
             $result = AuthLogic::edit_staffauth($post);
             $this->_success('修改成功');
           }
        $this->assign('menu_lists', AuthLogic::staffchooseMenu());
        $this->assign('info', AuthLogic::staffauthinfo($id));
        return $this->fetch(); 
     }
}