package receiver

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

type AssigneeReceiverSelector struct {
	engineerClient engineer.Interface
}

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

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

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