package scheduled

import (
	"time"

	"github.com/pingcap/test-infra/services/tcms/service"
	"github.com/pingcap/test-infra/services/tcms/utils"
)

func NewDailySummary(dailySummarySvc service.SummaryService) *dailySummary {
	return &dailySummary{
		summarySvc: dailySummarySvc,
	}
}

type dailySummary struct {
	summarySvc service.SummaryService
}

func (t *dailySummary) Run() {
	ctx := utils.FakeCtx()
	ctx.Log().Infof("generateDailySummary start")

	duration := 24 * time.Hour
	now := time.Now()
	startAt := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
	for i := 0; i < 5; i++ {
		_, err := t.summarySvc.DoDailySummary(ctx, startAt, duration)
		if err != nil {
			ctx.Log().With("startAt", startAt).Errorf(err, "generateDailySummary failed")
			return
		}

		startAt = startAt.Add(-duration)
	}

	ctx.Log().Infof("generateDailySummary end")
}
