package kubepersistentvolumefillingup

import (
	"jirasop/model"
	"jirasop/pkg/infra/cliniccli"
	"jirasop/pkg/infra/config"
	"jirasop/pkg/infra/log"
	"time"

	"github.com/go-logr/logr"
)

type ImportJobHandler struct {
	logger    logr.Logger
	clinicCli *cliniccli.ClinicClient
	config    []config.AlertReasonParam
}

func NewImportJobHandler(logconf config.LogConfig,
	config []config.AlertReasonParam,
	clinicCli *cliniccli.ClinicClient) *ImportJobHandler {
	logr := log.Logger.WithName("ImportJob")
	return &ImportJobHandler{logger: logr, clinicCli: clinicCli, config: config}
}

func (ij *ImportJobHandler) AnalyzeReason(issue *model.JiraWebhookEvent) (*model.AnalyzeReason, error) {
	issueStartAt := issue.Timestamp / 1000
	clusterID := issue.Issue.Fields.Unknowns["customfield_10616"].(string)
	period := ij.config[0][`period`].(int)
	from := int(issueStartAt) - period*60
	to := issueStartAt
	activities, err := ij.clinicCli.GetActivities(int(from), int(to), clusterID)
	if err != nil {
		ij.logger.Error(err, "fail to get activities")
	}

	res := &model.AnalyzeReason{Name: "ImportJob"}
	for _, v := range activities {
		if v.Tags.Status == `started` && v.DisplayName == ij.config[0][`event`] {
			res.Is = true
			res.Description = `From Event Center: An Import Job is started at ` + time.Unix(v.RecordTime, 0).UTC().String()
			return res, nil
		}
	}
	return &model.AnalyzeReason{Name: "ImportJob", Is: false, Description: "No Import Job is found recently"}, nil
}
