package task

import (
	"eta/eta_mini_ht_api/common/component/config"
	"eta/eta_mini_ht_api/common/contants"
	"eta/eta_mini_ht_api/task/base"
	_ "eta/eta_mini_ht_api/task/eta/author"
	_ "eta/eta_mini_ht_api/task/eta/permission"
	_ "eta/eta_mini_ht_api/task/message"
	_ "eta/eta_mini_ht_api/task/order"
	_ "eta/eta_mini_ht_api/task/product"
	_ "eta/eta_mini_ht_api/task/report"
	_ "eta/eta_mini_ht_api/task/sms"
	"github.com/beego/beego/v2/server/web"
	"github.com/beego/beego/v2/task"
)

func AddTasksToScheduler() {
	for _, t := range base.GetTasks() {
		if needAddTask(t.RunMode, web.BConfig.RunMode) {
			tk := task.NewTask(string(t.Name), t.Cron, t.Run)
			task.AddTask(string(t.Name), tk)
		}
	}
}
func needAddTask(taskRunMode string, runMode string) bool {
	if taskRunMode == base.PROD {
		return true
	}
	if taskRunMode == base.TEST {
		if runMode == base.PROD {
			return false
		}
		return true
	}
	if taskRunMode == base.DEV {
		if runMode == base.DEV {
			return true
		}
		return false
	}
	if taskRunMode == base.FORBIDDEN {
		return false
	}
	return false
}

// StartScheduler 启动任务调度器
func StartScheduler() {
	htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
	if htConfig.EnableTask() {
		task.StartTask()
	}
}

func init() {
	AddTasksToScheduler()
	StartScheduler()
}