package email

import (
	"context"
	"fmt"
	"strings"

	"github.com/nexuscrm/backend/internal/domain/ports"
	"github.com/nexuscrm/backend/pkg/logging"
)

// NoopSender logs email details without delivering them.
// Used when SMTP is not configured (dev / local / unconfigured environments).
type NoopSender struct {
	logger *logging.Logger
}

// NewNoopSender creates a no-op email sender that logs instead of sending.
func NewNoopSender(logger *logging.Logger) *NoopSender {
	return &NoopSender{logger: logger}
}

// Send logs the email parameters and returns nil.
func (n *NoopSender) Send(_ context.Context, msg *ports.EmailMessage) error {
	n.logger.Info(fmt.Sprintf(
		"[NOOP EMAIL] To=%s Subject=%q (SMTP not configured — email not delivered)",
		strings.Join(msg.To, ","), msg.Subject,
	))
	return nil
}
