package input

import (
	"errors"
	"fmt"
	"strconv"

	p "github.com/manifoldco/promptui"
)

// GetNumber получение числового ввода пользователя
func GetNumber(message string) (float64, error) {
	validate := func(input string) error {
		_, err := strconv.ParseFloat(input, 64)
		if err != nil {
			return errors.New(
				"Некорректное число. Пожалуйста, введите числовое значение.",
			)
		}
		return nil
	}

	prompt := p.Prompt{
		Label:    message,
		Validate: validate,
	}

	result, err := prompt.Run()
	if err != nil {
		fmt.Printf("Prompt failed %v\n", err)
		return 0, err
	}

	number, _ := strconv.ParseFloat(result, 64)
	return number, nil
}

// GetOperator получение оператора
func GetOperator() string {
	prompt := p.Select{
		Label: "Выберите операцию (+, -, *, /):",
		Items: []string{"+", "-", "*", "/"},
	}

	_, result, err := prompt.Run()
	if err != nil {
		fmt.Printf("Prompt failed %v\n", err)
		return ""
	}

	return result
}
