package common

import (
	"dbweb/core"
	"dbweb/lib/lsession"
	"dbweb/lib/safe"
	"encoding/base64"
	"fmt"
	"time"
)

type Kickout struct{}

func (a *Kickout) Get(p *core.ElementHandleArgs) {
	println(p.PKS[0])
	sid := p.PKS[0]
	if len(sid) == 0 {
		p.RenderError("sid 为空")
		return
	}
	bsid, err := base64.RawStdEncoding.DecodeString(sid)
	if err != nil {
		core.LOG.Panic(err)
	}
	if vu := lsession.GetSessionValue(bsid, "$user"); vu != nil {
		var user *core.User
		user = vu.(*core.User)
		p.More["用户名"] = user.Name
		p.More["当前部门"] = fmt.Sprintf("[%s]%s", user.Dept.Code, user.Dept.Name)
	} else {
		p.RenderError("sid 对应的用户未登录")
		return
	}

	p.HTML()
}

func (a *Kickout) Post(p *core.ElementHandleArgs) {
	撤销 := p.Req.FormValue("撤销")
	冻结原因 := p.Req.FormValue("冻结原因")
	冻结时间 := safe.Int(p.Req.FormValue("冻结时间"))
	sid := p.PKS[0]
	if len(sid) == 0 {
		p.RenderError("sid 为空")
		return
	}
	var user *core.User
	bsid, err := base64.RawStdEncoding.DecodeString(sid)
	if err != nil {
		core.LOG.Panic(err)
	}
	if vu := lsession.GetSessionValue(bsid, "$user"); vu != nil {
		user = vu.(*core.User)
	} else {
		p.RenderError("sid 对应的用户未登录")
		return
	}
	lsession.Kickout(bsid)
	if len(撤销) > 0 {
		_, err := p.DB.Exec("update nuser set FREEZETIME=null,FREEZEDESC=null where name=?", user.Name)
		if err != nil {
			core.LOG.Panic(err)
		}

	} else {
		_, err := p.DB.Exec("update nuser set FREEZETIME=?,FREEZEDESC=? where name=?",
			time.Now().Add(time.Minute*time.Duration(冻结时间)),
			冻结原因, user.Name)
		if err != nil {
			core.LOG.Panic(err)
		}
	}
	p.GotoMessage("成功冻结用户")
}
func init() {
	core.RegisterFun("kickout", new(Kickout), "_layout/blank")
}
