package cards

import (
	"fmt"
	"strings"

	"github.com/niels/banking-app/backend/internal/domain"
)

func NormalizeNetwork(network string) (string, error) {
	normalized := strings.ToLower(strings.TrimSpace(network))
	if normalized == "" {
		normalized = "visa"
	}

	switch normalized {
	case "visa", "mastercard":
		return normalized, nil
	default:
		return "", fmt.Errorf("%w: network must be visa or mastercard", domain.ErrValidation)
	}
}

func NormalizeCardType(cardType string) (string, error) {
	normalized := strings.ToLower(strings.TrimSpace(cardType))
	if normalized == "" {
		normalized = "multi_use"
	}

	switch normalized {
	case "multi_use", "single_use":
		return normalized, nil
	default:
		return "", fmt.Errorf("%w: card_type must be multi_use or single_use", domain.ErrValidation)
	}
}
