package supply

import (
	"context"
	"git.oa00.com/supply-chain/service/client"
)

type category struct {
}

type CategoryItem struct {
	Id       uint           `json:"id"`
	Name     string         `json:"name"`
	ParentId uint           `json:"parentId"`
	Children []CategoryItem `json:"children"`
}

// All @Title 获取分类
func (c *category) All(ctx context.Context) (result []CategoryItem, err error) {
	xClient, err := client.GetClient(c)
	if err != nil {
		return
	}
	err = xClient.Call(ctx, "All", 0, &result)
	return
}

type ArgsCategoryAdd struct {
	Name     string // 分类名称
	ParentId uint   // 上级id
}

// Add @Title 添加分类
func (c *category) Add(ctx context.Context, args ArgsCategoryAdd) (err error) {
	reply := 0
	xClient, err := client.GetClient(c)
	if err != nil {
		return
	}
	return xClient.Call(ctx, "Add", args, &reply)
}

type ArgsCategoryEdit struct {
	CategoryId uint   // 分类id
	Name       string // 分类名称
	ParentId   uint   // 上级id
}

// Edit @Title 编辑分类
func (c *category) Edit(ctx context.Context, args ArgsCategoryEdit) (err error) {
	reply := 0
	xClient, err := client.GetClient(c)
	if err != nil {
		return
	}
	return xClient.Call(ctx, "Edit", args, &reply)
}

type ArgsCategoryFindByIds struct {
	ThirdCategoryIds []uint // 三级分类id数组
}
type ThirdCategoryItem struct {
	Id       uint               `json:"id"`
	Name     string             `json:"name"`
	ParentId uint               `json:"parentId"`
	Parent   *ThirdCategoryItem `json:"parent"`
}

// FindByIds @Title 三级分类获取
func (c *category) FindByIds(ctx context.Context, args ArgsCategoryFindByIds) (result []ThirdCategoryItem, err error) {
	xClient, err := client.GetClient(c)
	if err != nil {
		return
	}
	err = xClient.Call(ctx, "FindByIds", args, &result)
	return
}