package notify

import (
	"context"

	larkutil "github.com/tidbcloud/devops/pkg/infra/clients/larkcli/util"
)

type NotifyAlertParam struct {
	Summary   string
	Priority  string
	Component string
	Link      string
}

func (m NotifyAlertParam) Message(cards MessageCardSet) (larkutil.IMMessage, error) {
	return larkutil.IMMessageCardTemplate{
		MType: "template",
		Data: larkutil.IMMessageCardTemplateData{
			ID: cards.AlertNotification,
			Vars: map[string]string{
				"summary":   m.Summary,
				"priority":  m.Priority,
				"component": m.Component,
				"link":      m.Link,
			},
		},
	}, nil
}

func (c *client) NotifyLongTailAlert(ctx context.Context, userID string, param NotifyAlertParam) (*string /*message id*/, error) {
	return c.SendMessage(ctx, ReceiveTypeUser, userID, param)
}

type JiraIssueInformationForS1TicketsParam struct {
	IssueKey        string
	IssueSummary    string
	Components      string
	AffectsVersions string
	Environment     string
	Description     string
	DetailLink      string
}

func (p JiraIssueInformationForS1TicketsParam) Message(cards MessageCardSet) (larkutil.IMMessage, error) {
	return larkutil.IMMessageCardTemplate{
		MType: "template",
		Data: larkutil.IMMessageCardTemplateData{
			ID: cards.JiraIssueInformationForS1Tickets,
			Vars: map[string]string{
				"issue_key":        p.IssueKey,
				"issue_summary":    p.IssueSummary,
				"components":       p.Components,
				"affects_versions": p.AffectsVersions,
				"environment":      p.Environment,
				"description":      p.Description,
				"detail_link":      p.DetailLink,
			},
		},
	}, nil
}

func (c *client) NotifyJiraIssueForS1Ticket(ctx context.Context, chatID string, param JiraIssueInformationForS1TicketsParam) (*string /*message id*/, error) {
	return c.SendMessage(ctx, ReceiveTypeChat, chatID, param)
}
