using System;
using System.Globalization;
using System.Windows.Data;

namespace CtrEditor.Converters
{
    public class RegionalFloatConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is float floatValue)
            {
                // Usar la cultura actual para mostrar el número con el separador decimal correcto
                return floatValue.ToString("N4", CultureInfo.CurrentCulture);
            }
            return value?.ToString() ?? string.Empty;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is string stringValue)
            {
                // Intentar parsing con la cultura actual primero
                if (float.TryParse(stringValue, NumberStyles.Float, CultureInfo.CurrentCulture, out float result))
                {
                    return result;
                }

                // Si falla, intentar con cultura invariante (punto como separador)
                if (float.TryParse(stringValue, NumberStyles.Float, CultureInfo.InvariantCulture, out result))
                {
                    return result;
                }

                // Si ambos fallan, intentar reemplazar punto por coma o viceversa
                string adjustedString = stringValue.Replace(',', '.').Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
                if (float.TryParse(adjustedString, NumberStyles.Float, CultureInfo.CurrentCulture, out result))
                {
                    return result;
                }
            }

            return 0.0f; // Valor por defecto si no se puede parsear
        }
    }
}