using SlnMesnac.Model.domain;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace SlnMesnac.WPF.Converter.Index
{
    public class WcsTaskStatusConvert : IValueConverter
    {
        private Dictionary<int, Dictionary<int, string>> dic = new()
        {
            //3#车间补四宫格空箱任务
            {1,
            new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "前往终点" },
                { 3, "前往终点" },
                { 4, "任务完成" },
            }
            },
            //3#车间从2#接驳位补充小托盘任务
            {2,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "agv到达接驳位里面，等待料箱上agv" },
                { 3, "agv正在退出2#接驳位" },
                { 4, "agv前往终点" },
                { 5, "agv前往终点" },
                { 6, "agv到达终点等待点，等待进入接驳位" },
                { 7, "agv正在进入接驳位" },
                { 8, "agv到达终点接驳位，等待料箱离开agv" },
                { 9,  "agv正在退出终点接驳位" },
                { 10, "任务完成" },
            }
            },
            //3#车间从下料点到1-16机台送料任务
            {3,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "前往终点" },
                { 3, "前往终点" },
                { 4, "任务完成" },
            }
            },
            //3#接驳位到2#计量室接驳位的送料任务
            {4,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "agv到达接驳位里面，等待料箱上agv" },
                { 3, "agv正在退出3#接驳位" },
                { 4, "agv前往终点2#接驳位" },
                { 5, "agv前往终点2#接驳位" },
                { 6, "agv到达终点等待点，等待进入接驳位" },
                { 7, "agv正在进入接驳位" },
                { 8, "agv到达终点接驳位，等待料箱离开agv" },
                { 9,  "agv正在退出终点接驳位" },
                { 10, "任务完成" },
            }
            },
            //2#接驳位色粉派送至色粉存放点
            {5,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "agv到达接驳位里面，等待料箱上agv" },
                { 3, "agv正在退出2#接驳位" },
                { 4, "agv前往终点" },
                { 5, "agv前往终点" },
                { 6, "任务完成" },
            }
            },
            //3#车间从色粉存放点补充小托盘任务
             {6,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "agv前往终点等待点" },
                { 3, "等待点等待进入3#接驳位" },
                { 4, "等待点等待进入3#接驳位" },
                { 5, "agv正在进入3#接驳位" },
                { 6, "agv到达终点接驳位，等待料箱离开agv" },
                { 7,  "agv正在退出终点接驳位" },
                { 8, "任务完成" },
            }
            },
             //色粉存放点空托盘派送至2#接驳位
            {7,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "agv前往终点等待点" },
                { 3, "等待点等待进入2#接驳位" },
                { 4, "等待点等待进入2#接驳位" },
                { 5, "agv正在进入2#接驳位" },
                { 6, "agv到达终点接驳位，等待料箱离开agv" },
                { 7,  "agv正在退出终点接驳位" },
                { 8, "任务完成" },
            }
            },
            {8,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "前往终点" },
                { 3, "前往终点" },
                { 4, "任务完成" },
            }
            },
            {10,
                 new Dictionary<int, string>()
            {
                { 0, "任务创建,WCS未下发" },
                { 1, "任务已下发,前往起始地" },
                { 2, "前往终点" },
                { 3, "前往终点" },
                { 4, "任务完成" },
            }
            }
        };

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is WcsTask wcsTask)
            {
                if (dic.TryGetValue(wcsTask.TaskType, out var taskStatusDic))
                {
                    if (taskStatusDic.TryGetValue(wcsTask.TaskStatus, out var taskStatus))
                    {
                        return taskStatus;
                    }
                }
            }
            else if (value is WcsTaskLog wcsTaskLog)
            {
                if (dic.TryGetValue(wcsTaskLog.TaskType, out var taskStatusDic))
                {
                    if (taskStatusDic.TryGetValue(wcsTaskLog.TaskStatus, out var taskStatus))
                    {
                        return taskStatus;
                    }
                }
            }
            return "未知";
        }

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