package workflow

import (
	"context"
	"git.kumo.work/shama/service/client"
	"git.kumo.work/shama/service/lib/bean"
	"time"
)

type node struct {
}

type ArgsNodeCountSearch struct {
	StaffIds []int64 // 员工筛选
	Status   []int64 // 状态筛选
}

type NodeCountItem struct {
	BusinessType string `json:"businessType"`
	Count        int64  `json:"count"`
}

// Count @TITLE 节点统计
func (n *node) Count(ctx context.Context, args ArgsNodeCountSearch) (reply []NodeCountItem, err error) {
	xClient, err := client.GetClient(n)
	if err != nil {
		return
	}
	err = xClient.Call(ctx, "Count", args, &reply)
	return
}

type ArgsNodeList struct {
	Page   bean.Page
	Search NodeSearch
}
type NodeSearch struct {
	StaffIds     []int64 // 员工筛选
	Status       []int64 // 状态筛选
	BusinessType string  // 业务类型
}
type ReplyNodeList struct {
	List  []NodeItem `json:"list"`
	Total int64      `json:"total"`
}
type NodeItem struct {
	Id           int64      `json:"id"`
	BusinessId   int64      `json:"businessId"`
	BusinessName string     `json:"businessName"`
	BusinessType string     `json:"businessType"`
	Status       int64      `json:"status"`
	CreatedAt    *time.Time `json:"createdAt"`
}

// List @TITLE 节点列表
func (n *node) List(ctx context.Context, args ArgsNodeList) (reply ReplyNodeList, err error) {
	xClient, err := client.GetClient(n)
	if err != nil {
		return
	}
	err = xClient.Call(ctx, "List", args, &reply)
	return
}

type ArgsNodeAdopt struct {
	StaffId int64 // 审核人
	NodeId  int64 // 节点id
}

// Adopt @TITLE 审核通过
func (n *node) Adopt(ctx context.Context, args ArgsNodeAdopt) (err error) {
	xClient, err := client.GetClient(n)
	if err != nil {
		return
	}
	reply := 0
	err = xClient.Call(ctx, "Adopt", args, &reply)
	return
}

type ArgsNodeReject struct {
	StaffId int64  // 审核人
	NodeId  int64  // 节点id
	Reason  string // 审核结果
}

// Reject @TITLE 审核驳回
func (n *node) Reject(ctx context.Context, args ArgsNodeReject) (err error) {
	xClient, err := client.GetClient(n)
	if err != nil {
		return
	}
	reply := 0
	err = xClient.Call(ctx, "Reject", args, &reply)
	return
}