package controller

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/go-playground/validator/v10"
	"hongze/hz_eta_docs_api/controller/resp"
	"hongze/hz_eta_docs_api/global"
	"hongze/hz_eta_docs_api/models/crm"
	"hongze/hz_eta_docs_api/models/request"
	"hongze/hz_eta_docs_api/services"
)

// HelpDocController 帮助文档
type HelpDocController struct{}

// Menu
// @Description 菜单
// @Success 200 {string} string "获取成功"
// @Router /help_doc/classify/list [get]
func (a *HelpDocController) ClassifyList(c *gin.Context) {
	var req request.HelpDocClassifyListReq
	err := c.Bind(&req)
	if err != nil {
		errs, ok := err.(validator.ValidationErrors)
		if !ok {
			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
			return
		}
		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
		return
	}
fmt.Println("code:",req.BusCode)
	// 获取列表数据
	logOb := new(crm.HelpDocClassify)
	rootList, e := logOb.GetItemsByCondition("parent_id=0", make([]interface{}, 0), "sort asc,classify_id asc")
	if e != nil {
		resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
		return
	}

	classifyAll, e := logOb.GetItemsByCondition("", make([]interface{}, 0), "sort asc,classify_id asc")
	if e != nil {
		resp.FailMsg("获取失败", "获取帮助文档列表失败, Err: "+e.Error(), c)
		return
	}

	classifies := make([]*crm.HelpDocClassifyItems, 0)
	for _, v := range classifyAll {
		child := make([]*crm.HelpDocClassifyItems, 0)
		item := crm.HelpDocClassifyItems{
			ClassifyId:         v.ClassifyId,
			ClassifyName:       v.ClassifyName,
			ParentId:           v.ParentId,
			Level:              v.Level,
			Sort:               v.Sort,
			SysUserId:          v.SysUserId,
			SysUserRealName:    v.SysUserRealName,
			VisibleBusinessIds: v.VisibleBusinessIds,
			Children:           child,
		}
		classifies = append(classifies, &item)
	}


	roots := make([]*crm.HelpDocClassifyItems, 0)
	for _, v := range rootList {
		child := make([]*crm.HelpDocClassifyItems, 0)
		item := crm.HelpDocClassifyItems{
			ClassifyId:         v.ClassifyId,
			ClassifyName:       v.ClassifyName,
			ParentId:           v.ParentId,
			Level:              v.Level,
			Sort:               v.Sort,
			SysUserId:          v.SysUserId,
			SysUserRealName:    v.SysUserRealName,
			VisibleBusinessIds: v.VisibleBusinessIds,
			Children:           child,
		}
		roots = append(roots, &item)
	}
	nodeAll := make([]*crm.HelpDocClassifyItems, 0)
	for k := range roots {
		rootNode := roots[k]
		services.HelpDocClassifyItemsMakeTree(classifies, rootNode)
		nodeAll = append(nodeAll, rootNode)
	}

	resp.OkData("获取成功", nodeAll, c)
}