package crontask

import (
	"context"
	"wechat-api/internal/svc"

	"github.com/robfig/cron/v3"
	"github.com/zeromicro/go-zero/core/logx"
)

type CronTask struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewCronTask(ctx context.Context, svcCtx *svc.ServiceContext) *CronTask {
	return &CronTask{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

func ScheduleRun(c *cron.Cron, serverCtx *svc.ServiceContext) {
	l := NewCronTask(context.Background(), serverCtx)
	c.AddFunc("* * * * *", func() {
		l.sendMsg()
	})

	sendWx := NewCronTask(context.Background(), serverCtx)
	c.AddFunc("* * * * *", func() {
		sendWx.sendWx()
	})

	sendWxOnTimeout := NewCronTask(context.Background(), serverCtx)
	c.AddFunc("* * * * *", func() {
		sendWxOnTimeout.sendWxOnTimeout()
	})

	computeStatistic := NewCronTask(context.Background(), serverCtx)
	c.AddFunc("0 * * * *", func() {
		computeStatistic.computeStatistic()
	})
}
