package api

import (
	"github.com/gin-gonic/gin"
	"github.com/goWxHook/goWxHook/core"
	"github.com/goWxHook/goWxHook/utils"
)

// getTagList
//
//	@Summary		获取标签列表
//	@Description	获取标签列表接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Response		200	{object}	CommonStringResponse{Data=[]core.GetTagListResponseDataItem}	"{\"code\":0, ....}
//	@Router			/api/v1/tag/list [get]
func (w *WebApi) getTagList(c *gin.Context) {
	list, err := w.WxApi.GetTagList()
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", list)
	return
}

// addTag
//
//	@Summary		添加标签
//	@Description	添加标签接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.AddTagRequest									true	"标签信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.AddTagResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/tag/add [post]
func (w *WebApi) addTag(c *gin.Context) {
	var form core.AddTagRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.AddTag(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// deleteTag
//
//	@Summary		删除标签
//	@Description	删除标签接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.DeleteTagRequest									true	"标签信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.DeleteTagResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/tag/delete [post]
func (w *WebApi) deleteTag(c *gin.Context) {
	var form core.DeleteTagRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	info, err := w.WxApi.DeleteTag(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", info)
	return
}

// modifyTag
//
//	@Summary		修改标签
//	@Description	修改标签接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.ModifyTagRequest	true	"标签信息"
//	@Response		200		{object}	CommonStringResponse	"{\"code\":0, ....}
//	@Router			/api/v1/tag/modify [post]
func (w *WebApi) modifyTag(c *gin.Context) {
	var form core.ModifyTagRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	err = w.WxApi.ModifyTag(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", nil)
	return
}

// addTagToUser
//
//	@Summary		为用户添加标签
//	@Description	为用户添加标签接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.AddTagToUserRequest									true	"标签信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.AddTagToUserResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/tag/add/user [post]
func (w *WebApi) addTagToUser(c *gin.Context) {
	var form core.AddTagToUserRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.AddTagToUser(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}

// getTagListByWxid
//
//	@Summary		获取用户标签列表
//	@Description	获取用户标签列表接口
//	@Tags			标签
//	@Accept			json
//	@Produce		json
//	@Param			body	body		core.GetTagListByWxidRequest									true	"标签信息"
//	@Response		200		{object}	CommonStringResponse{Data=core.GetTagListByWxidResponseData}	"{\"code\":0, ....}
//	@Router			/api/v1/tag/list/user [post]
func (w *WebApi) getTagListByWxid(c *gin.Context) {
	var form core.GetTagListByWxidRequest
	err := c.ShouldBindJSON(&form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	ret, err := w.WxApi.GetTagListByWxid(form)
	if err != nil {
		utils.ResponseError(c, err.Error(), nil)
		return
	}
	utils.ResponseOK(c, "success", ret)
	return
}
