using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; namespace WIDESEAWCS_Common.TaskEnum { public static class TaskEnumHelper { public static List GetEnumIndexList(this Type type) { if (type is null) throw new ArgumentNullException("type"); if (!type.IsEnum) return new List(); return Enum.GetValues(type).Cast().ToList(); } public static TaskTypeGroup GetTaskTypeGroup(this int taskType) { if (!int.TryParse(Enum.Parse(taskType.ToString()).ToString(), out int result)) { return TaskTypeGroup.OutbondGroup; } else if (!int.TryParse(Enum.Parse(taskType.ToString()).ToString(), out result)) { return TaskTypeGroup.InboundGroup; } else if (!int.TryParse(Enum.Parse(taskType.ToString()).ToString(), out result)) { return TaskTypeGroup.RelocationGroup; } else if (!int.TryParse(Enum.Parse(taskType.ToString()).ToString(), out result)) { return TaskTypeGroup.OtherGroup; } else { throw new NotImplementedException(); } } public static int GetNextNotCompletedStatus(this int currentStatus) where T : Enum { Type type = typeof(T); if (type is null) throw new ArgumentNullException(); if (!type.IsEnum) return 0; if (type == typeof(TaskInStatusEnum)) { List taskInboundTypes = type.GetEnumIndexList(); return taskInboundTypes.Where(x => x > currentStatus && x < (int)TaskInStatusEnum.InFinish).OrderBy(x => x).FirstOrDefault(); } else if (type == typeof(TaskOutStatusEnum)) { return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskOutStatusEnum.OutFinish).OrderBy(x => x).FirstOrDefault(); } else { throw new NotImplementedException(); } } } }