package message

import (
	larkcard "github.com/larksuite/oapi-sdk-go/v3/card"
	larkutil "github.com/tidbcloud/escalation-base/feishu_messager_v2/pkg/infra/clients/larkcli/util"
)

type CardParam struct {
	Title string
	Color string
	Text  string
}

func (c CardParam) Message() (larkutil.IMMessage, error) {

	card := c.generateMessageCard()
	return larkutil.IMMessageCardBody(*card), nil
}

func (params CardParam) generateMessageCard() *larkcard.MessageCard {
	config := larkcard.NewMessageCardConfig().
		WideScreenMode(true).
		EnableForward(true).
		UpdateMulti(false).
		Build()
	header := larkcard.NewMessageCardHeader().
		Template(params.Color).
		Title(larkcard.NewMessageCardPlainText().
			Content(params.Title).
			Build()).
		Build()
	divElement := larkcard.NewMessageCardDiv().
		Fields([]*larkcard.MessageCardField{larkcard.NewMessageCardField().
			Text(larkcard.NewMessageCardLarkMd().
				Content(params.Text).
				Build()).
			IsShort(true).
			Build()}).
		Build()
	cardContent := larkcard.NewMessageCard().
		Config(config).
		Header(header).
		Elements([]larkcard.MessageCardElement{divElement})
	return cardContent
}
