package admin

import (
	"errors"
	"github.com/kataras/iris/v12"
	"github.com/sirupsen/logrus"
	"main/database"
	"main/model"
	"main/utils"
)

func getUserList(ctx iris.Context) {
	err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", utils.UserList))
	if utils.ErrHandle(ctx, err) {
		return
	}
}

func updateUserInfo(ctx iris.Context) {
	var userinfo model.Userinfo
	err := ctx.ReadJSON(&userinfo)
	if utils.ErrHandle(ctx, err) {
		return
	}
	db := database.GetInstance().GetMysqlDb()
	if err1 := db.Save(&userinfo).Error; err1 != nil {
		logrus.Errorln("sql执行失败：", err1)
	}
	utils.UpdateUserInfo()
	err = ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
	if utils.ErrHandle(ctx, err) {
		return
	}
}

func deleteUser(ctx iris.Context) {
	loginUser := utils.GetLoginUser(ctx)
	username := ctx.URLParam("username")
	if username == loginUser.Username {
		logrus.Errorln(loginUser.Username, "无法删除本人")
		ctx.StatusCode(iris.StatusBadRequest)
		ctx.SetErr(errors.New("不可删除本人用户"))
		return
	}
	db := database.GetInstance().GetMysqlDb()
	var user []model.User
	if err := db.Where("username = ?", username).Find(&user).Error; err != nil {
		logrus.Errorln("sql执行失败：", err)
	}
	if len(user) == 0 {
		ctx.StatusCode(iris.StatusBadRequest)
		ctx.SetErr(errors.New("用户不存在"))
		return
	}
	if err := db.Where("username = ?", username).Delete(&model.User{}).Error; err != nil {
		logrus.Errorln("sql执行失败：", err)
	}
	if err := db.Where("username = ?", username).Delete(&model.Userinfo{}).Error; err != nil {
		logrus.Errorln("sql执行失败：", err)
	}
	utils.UpdateUserInfo()
	err := ctx.JSON(utils.FormatRes(iris.StatusOK, "", "success"))
	if utils.ErrHandle(ctx, err) {
		return
	}
}
