package sysuser

import (
	"wechat-conf/controllers"
	"wechat-conf/models/model"
	"wechat-conf/service/sysuser"
)

// SysuserController 信息
type SysuserController struct {
	dao *sysuser.SysuserServ
	controllers.BaseController
}

// Constructor 初始化 Controller
// @Title Constructor
// @Description 初始化 Controller, 系统自动调用
func (c *SysuserController) Constructor() {
	c.dao = sysuser.NewSysuserServ(c.Context)
}

func (c *SysuserController) GetUserList() {
	page, _ := c.GetInt("page")
	pageSize, _ := c.GetInt("pagesize")
	list, err := c.dao.GetSysuserList(page, pageSize)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON(list)
}

func (c *SysuserController) GetUserById() {
	userId := c.GetString(":userId")
	user, err := c.dao.GetSysuserById(userId)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON(user)
}
func (c *SysuserController) SaveUser() {
	user := model.SysUser{}
	if err := c.ParseForm(&user); err != nil {
		c.ResponseError(err)
	}
	newUser, err := c.dao.SaveUser(user)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON(newUser)
}
func (c *SysuserController) DeleteUser() {
	userId := c.GetString(":userId")
	err := c.dao.DeleteUser(userId)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON("删除成功")
}
func (c *SysuserController) BindUser() {
	userId := c.GetString(":userId")
	orgId := c.GetString(":orgId")
	err := c.dao.BindUser(userId, orgId)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON("綁定成功")
}
func (c *SysuserController) UnbindUser() {
	userId := c.GetString(":userId")
	orgId := ""
	err := c.dao.BindUser(userId, orgId)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON("解绑成功")
}

func (c *SysuserController) ChangePassword() {
	userId := c.GetString(":userId")
	pwd := c.GetString(":pwd")
	err := c.dao.ChangePassword(userId, pwd)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON("修改成功")
}
func (c *SysuserController) GetCurrentUser() {
	user := c.Context.Get("user").(*model.SysUser)
	c.ResponseJSON(user)
}

func (c *SysuserController) GetOrgAuth() {
	user := c.Context.Get("user").(*model.SysUser)
	flag, err := c.dao.GetOrgAuthByUserId(user.UserId)
	if err != nil {
		c.ResponseError(err)
	}
	c.ResponseJSON(flag)
}