package receiver

import (
	"github.com/tidbcloud/jiraport/pkg/clients/engineer"
	"github.com/tidbcloud/jiraport/pkg/entity"
)

type SecondaryReceiverSelector struct {
	engineerClient engineer.Interface
}

func NewSecondaryReceiverSelector(engineerClient engineer.Interface) (*SecondaryReceiverSelector, error) {
	return &SecondaryReceiverSelector{engineerClient: engineerClient}, nil
}

func (rs *SecondaryReceiverSelector) SelectReceiver(name string, issue *entity.Issue) ([]Receiver, error) {
	if name != "secondary" {
		return nil, nil
	}
	receivers := make([]Receiver, 0)

	assigneeEmail := issue.AssigneeEmail
	if assigneeEmail == "" {
		return nil, &NoAssigneeError{s: "no assignee as receiver"}
	}
	secondary, err := rs.engineerClient.GetSecondaryByEmail(assigneeEmail)
	if err != nil {
		return nil, err
	}
	if secondary != nil {
		receivers = append(receivers, secondary)
	}
	return receivers, nil
}
