<?php

/**
 * +----------------------------------------------------------------------
 * | Created By PhpStorm
 * +----------------------------------------------------------------------
 * | DATE: 2021/7/14
 * +----------------------------------------------------------------------
 * | TIME: 17:20
 * +----------------------------------------------------------------------
 * | Author: YangXing(925032253@qq.com)
 * +----------------------------------------------------------------------
 * | Class: AdminUser
 * +----------------------------------------------------------------------
 */

namespace admin\action\user;

use admin\action\baseAction;
use model\authoritySystem;
use model\element;
use model\sample\sample;
use model\user\adminUser;
use model\user;



class adminUserAction extends baseAction
{

    public function list()
    {
        $req = \mvc::$req;
        $sample = new adminUser();
        $rules=[];
        $data = $sample->list($rules,$req['filters'], $req['page'], $req['rows'], $req['sidx'], $req['sord'],'au_id');
        $this->successJson($data);
    }

    public function edit()
    {
        $req = \mvc::$req;
        $this->elename = $req['elename'];
        $this->elecfg = require(\mvc::$cfg['projectDir'].'/element/'.$this->elename.'.php');
        $this->element = new element($this->elecfg);
        $key = $req['key'];
        unset($req['key']);
        unset($req['elename']);
        foreach($req as $k=>$v){
            if($v!='' && $this->elecfg['fields'][$k]['unique'] && !$this->elecfg['fields'][$k]['key']){
                if($this->element->hasWithOut($k,$v,$key)){
                    $this->msgJson(sprintf("重复的 [ %s ] 在 [ %s ] 中",$v,$this->elecfg['fields'][$k][LG_NAME]));
                }
            }
            if(isset($this->elecfg['fields'][$k]['editor']['ruleFunction']) && !empty($this->elecfg['fields'][$k]['editor']['ruleFunction'])){
                $this->elecfg['fields'][$k]['editor']['ruleFunction']($req[$this->elecfg['fields'][$k]['field']],$req);
            }
        }
        if(isset($this->elecfg['fields']['opuser'])) $req['opuser'] = getOpuser();
        if(isset($this->elecfg['fields']['update_time'])) $req['update_time'] = getNowTime();

        if(empty($key)){
            //unset($req[$this->elecfg['key']]);
            $req['au_pass'] = (new user())->pass2(getOpuser(),$req['au_pass']);
            if(isset($this->elecfg['fields']['create_time'])) $req['create_time'] = getNowTime();
            $id = $this->element->add($req);
            $this->successJson(['key'=>$id,'op'=>'add']);
        }else{
            $row = $this->element->getRowByKey($key);
            if(isset($req['au_pass']) && $row['au_pass'] != $req['au_pass']){
                $req['au_pass'] = (new user())->pass2(getOpuser(),$req['au_pass']);
            }
            if($this->element->edit($key,$req)){
                $this->successJson(['key'=>$key,'op'=>'edit']);
            }
        }
    }

    public function editCell()
    {
        $req = \mvc::$req;
        $id = $req['id'];
        $oper = $req['oper'];
        $field = $req['field'];
        if(isset($req['value']))
            $value = $req['value'];
        else
            $value = $req[$field];

        $user = new adminUser();
        if($oper=='edit'){
            $user->setValue($id,$field,$value);
        }

        $this->successJson();
    }

    public function updatePassWord()
    {
        if(!empty(\mvc::$req)){
            $db = new adminUser();
            if($db->getIsExistByOriginalPass(\mvc::$req['au_pass'])){
                $auth = new authoritySystem();
                $db->setValue(getOpuser(),'au_pass',(new user())->pass2(getOpuser(),\mvc::$req['new_pass']));
                $db->setValue(getOpuser(),'au_passupdatetime',getNowTime());
                $this->successJson(['msg'=>lg('密码修改成功')]);
            }else{
                $this->successJson(['msg'=>lg('原密码错误')]);
            }
        }
        \view::put();
    }

    public function getAllKeyValues()
    {
        $req = \mvc::$req;
        //$user = new adminUser();
        //$rows = $user->getAll();
        $where=null;
        $user = makeOne(\model\user::class);
       if(!empty($req['pwcode'])){
            if($ids = $user->getUserIdByPwcode($req['pwcode'])){
                $where['au_id'] = $ids;
            }
        }
        $rows = $user->getAll($where);
        
        $data = [];
        foreach($rows as $k=>$row){
            $data[$k] = ['key'=>$row['au_id'], 'value'=> $row['au_id'] ];
        }
        $this->successJson($data);
    }

    public function loginouts()
    {
        if (isset(\mvc::$req['is_loginout']) && \mvc::$req['is_loginout'] == 1)
        {
            $url = 'http://'.$_SERVER['HTTP_HOST'].\mvc::$cfg['path']['site'];
            $_SESSION['loginout'] = true;
            echo "<script>window.top.location.href='".$url."';</script>";
            exit();
        }
    }

    /**
     * @param $
     * @return array
     */
    public function getItem($key){
        $user = new adminUser();
        $data = $user->getItem($key,true);
        $this->successJson($data);
    }

}