package message

import (
	"github.com/tidbcloud/devops/api"
	msgent "github.com/tidbcloud/devops/entity/message"
)

type SendEmailBatchTenant struct {
	TenantIDs []string `json:"tenant_ids"`
	Role      string   `json:"role"`
}

type SendEmailBatchUsers struct {
	Emails []string `json:"emails"`
}

type SendEmailBatchRequest struct {
	Name          string                `json:"name"`
	TargetTenants *SendEmailBatchTenant `json:"target_tenants,omitempty"`
	TargetUsers   *SendEmailBatchUsers  `json:"target_users,omitempty"`
	Template      msgent.EmailTemplate  `json:"template"`
	Reason        string                `json:"reason"`
	FromAddress   string                `json:"from_address"`
	Concurrency   int                   `json:"concurrency"`
	PerBatch      int                   `json:"per_batch" default:"100"`
}

type SendEmailBatchResponse struct {
	api.BaseResp

	SuccessTargets []msgent.EmailTarget `json:"success_targets"`
	FailedTargets  []msgent.EmailTarget `json:"failed_targets"`
}

type SendEmailRequest struct {
	Name        string               `json:"name"`
	Target      msgent.EmailTarget   `json:"target"`
	Template    msgent.EmailTemplate `json:"template"`
	Reason      string               `json:"reason"`
	FromAddress string               `json:"from_address"`
}

type ListEmailRecordsRequest struct {
	api.PaginationReq

	ReasonLike    *string `form:"reason_like"`
	FromAddressIs *string `form:"from_address_is"`
}

type ListEmailRecordsResponse struct {
	api.BaseResp

	Records []*msgent.EmailRecord `json:"records"`
	Total   int64                 `json:"total"`
}

type GetEmailRecordResponse struct {
	api.BaseResp

	Record *msgent.EmailRecord `json:"record"`
}
