using ServerManagerTool.Utils;
using System;
using System.Globalization;
using System.Windows.Data;
using WPFSharp.Globalizer;

namespace ServerManagerTool.Lib.ViewModel
{
    public class MapNameValueConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            try
            {
                var valueString = value as string;
                if (valueString == null)
                    return string.Empty;

                var name = GlobalizedApplication.Instance.GetResourceString(valueString);
                if (!string.IsNullOrWhiteSpace(name))
                    return name;

                name = GameData.FriendlyMapNameForClass(valueString, true);
                if (!string.IsNullOrWhiteSpace(name))
                    return name;

                var mapName = ModUtils.GetMapName(valueString);

                // check if the name is stored in the globalization file
                name = GlobalizedApplication.Instance.GetResourceString(mapName);
                if (!string.IsNullOrWhiteSpace(name))
                    return name;

                if (!string.IsNullOrWhiteSpace(mapName))
                    return mapName;

                return valueString;
            }
            catch
            {
                return value ?? string.Empty;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
