using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Data;

namespace BBWY.Client.Converters
{
    public class TaskStateToBooleanConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string[] parray = parameter.ToString().Split(':');//参数拆分
            string valueStr = value == null ? string.Empty : value.ToString().ToLower();
            string returnValue = string.Empty;
            try
            {
                if (string.IsNullOrEmpty(valueStr))
                {
                    returnValue = parray[0].Contains("#null") ? parray[1] : parray[2];
                }
                else if (parray[0].Contains("|"))
                {
                    returnValue = parray[0].Split('|').Contains(valueStr) ? parray[1] : parray[2];
                }
                else
                {
                    returnValue = parray[0].Equals(valueStr) ? parray[1] : parray[2];
                }
                if (returnValue.Equals("#source", StringComparison.CurrentCultureIgnoreCase))
                    return value;
                return returnValue;
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"ObjectConverter {ex.Message} {parameter}");
                Console.ResetColor();
            }
            return parray[2];
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var returnValue = "otherValue";
            string[] parray = parameter.ToString().ToLower().Split(':');
            if (value == null)
                return returnValue;
            var valueStr = value.ToString().ToLower();
            if (valueStr != parray[1])
                return returnValue;
            else
            {
                var resData = parray[0].Contains('|') ? parray[0].Split('|')[0] : parray[0];
                if (resData == "#null")
                {
                    return null;
                }
                return resData;
            }
               
        }
    }
}