package task

import (
	"context"

	"github.com/hibiken/asynq"
	"go.uber.org/zap"

	packageexpiryapp "github.com/break/junhong_cmp_fiber/internal/application/packageexpiry"
)

// PackageExpiryReminderHandler 处理每日套餐临期节点提醒任务。
type PackageExpiryReminderHandler struct {
	service *packageexpiryapp.ReminderService
	logger  *zap.Logger
}

// NewPackageExpiryReminderHandler 创建套餐临期提醒任务处理器。
func NewPackageExpiryReminderHandler(service *packageexpiryapp.ReminderService, logger *zap.Logger) *PackageExpiryReminderHandler {
	return &PackageExpiryReminderHandler{service: service, logger: logger}
}

// Handle 扫描 15、7、3 天节点并发布个人客户站内通知。
func (h *PackageExpiryReminderHandler) Handle(ctx context.Context, _ *asynq.Task) error {
	h.logger.Info("开始执行套餐临期节点提醒")
	if err := h.service.Run(ctx); err != nil {
		h.logger.Error("套餐临期节点提醒失败", zap.Error(err))
		return err
	}
	return nil
}
