package events

import (
	"fmt"
	"spaceofcheng/services/utils"

	"github.com/zjxpcyc/tinyevent"
)

// 内置事件列表
const (
	EvtRegiste = "reigste"
)

// EvtActions 内置 Action 列表
var EvtActions = map[string]tinyevent.Action{
	// 测试
	"tsAction": tsAction,

	// 赠送卡券
	"presentCoupon": presentCoupon,
}

// ListenAllEvent 监听所有事件
func ListenAllEvent() {
	// 所有需要执行的事件
	allEvts, err := getAllEvents()
	if err != nil {
		utils.LogError(err)
	}

	// 刷新中控中心
	utils.ResetEvtBus()

	for evt, acts := range allEvts {
		for _, actKey := range acts {
			act, ok := EvtActions[actKey]
			if ok {
				utils.ListenEvent(evt, act)
			}
		}
	}
}

// getAllEvents 获取数据库配置
func getAllEvents() (map[string][]string, error) {
	// TODO
	return map[string][]string{
		EvtRegiste: []string{
			"tsAction",
			"presentCoupon",
		},
	}, nil
}

var tsAction = func(e tinyevent.Event) error {
	str := e.Payload.(string)
	fmt.Println(str)
	return nil
}
