package controllers

import (
	"exhibitionCentre/base"
	"exhibitionCentre/logging"
	"exhibitionCentre/models"
	"exhibitionCentre/utils"
	"fmt"
)

func UpdateUser(router *base.Router) (int, []byte) {
	// 鉴权
	jwt, authorized := Authenticate(router)
	if !authorized {
		logging.Log.Error("更新用户信息鉴权失败")
		return 0, nil
	}

	// 获取email的用户是否存在
	user, err := models.GetUser(jwt.Email)
	if err != nil {
		logging.Log.Errorf("Settings页用户(%s), err: %v", jwt.Email, err.Error())
		return 404, utils.SerializeErrorData(fmt.Sprintf("该用户(%s)不存在!", jwt.Email))
	}

	// 解析request数据
	var info SettingsInfo
	if err := utils.JsonParse(router.Data, &info); err != nil {
		logging.Log.Errorf("解析设置用户信息失败: %s\n", err.Error())
		return 403, utils.SerializeErrorData("更新用户信息失败!")
	}
	user.DisplayName = info.DisplayName

	if !models.UpdateUser(user) {
		return 403, utils.SerializeErrorData("更新用户信息失败!")
	}
	return 200, []byte("{}")
}
