package wechatmenu

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

// MenuController 信息
type MenuController struct {
	dao  *wechatmenu.WechatmenuServ
	sdao *sysuser.SysuserServ
	controllers.BaseController
}

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

func (c *MenuController) GetMenuList() {
	user := c.Context.Get("user").(*model.SysUser)
	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
	if err != nil {
		c.ResponseError(err)
	}
	client, err := utils.Component.GetWxClient(appId)
	if err != nil {
		c.ResponseError(err)
	}
	menu, err := client.GetMenu()
	var code string = err.Error()
	if err != nil {
		if strings.Contains(code, "46003") {
			c.ResponseJSON(menu)
		} else {
			c.ResponseError(err)
		}
	}
	c.ResponseJSON(menu)
}

func (c *MenuController) RefreshMenu() {
	user := c.Context.Get("user").(*model.SysUser)
	str := c.GetString("wechatJson")
	var data []byte = []byte(str)
	err := c.dao.UpdateWechatMenu(str, user.OrgId)
	if err != nil {
		c.ResponseError(err)
	}
	appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
	if err != nil {
		c.ResponseError(err)
	}
	client, err := utils.Component.GetWxClient(appId)
	if err != nil {
		c.ResponseError(err)
	}
	err = client.RefreshMenu(data)
	if err != nil {
		c.ResponseError(err)
	}
}