package validation

import (
	"slices"

	msgent "github.com/tidbcloud/devops/entity/message"
)

var (
	Message = messageValidator{}
)

type messageValidator struct{}

func (m messageValidator) EmailRecord(r *msgent.EmailRecord) error {
	if r.Reason == "" {
		return ErrRequired("reason")
	}
	if r.Applicant == "" {
		return ErrRequired("applicant")
	}
	if r.ToTarget == nil {
		return ErrRequired("to_target")
	}
	if r.EmailTemplate.ID == "" {
		return ErrRequired("email_template.id")
	}

	if r.FromAddress == "" {
		return ErrRequired("from_address")
	}
	if !slices.Contains(msgent.SupportedFromAddresses, r.FromAddress) {
		return ErrInvalid("from_address", r.FromAddress)
	}

	return nil
}
