| 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<int> GetEnumIndexList(this Type type) | 
|         { | 
|             if (type is null) throw new ArgumentNullException("type"); | 
|             if (!type.IsEnum) return new List<int>(); | 
|             return Enum.GetValues(type).Cast<int>().ToList(); | 
|         } | 
|   | 
|         public static TaskTypeGroup GetTaskTypeGroup(this int taskType) | 
|         { | 
|             if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(taskType.ToString()).ToString(), out int result)) | 
|             { | 
|                 return TaskTypeGroup.OutbondGroup; | 
|             } | 
|             else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result)) | 
|             { | 
|                 return TaskTypeGroup.InboundGroup; | 
|             } | 
|             else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(taskType.ToString()).ToString(), out result)) | 
|             { | 
|                 return TaskTypeGroup.RelocationGroup; | 
|             } | 
|             else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(taskType.ToString()).ToString(), out result)) | 
|             { | 
|                 return TaskTypeGroup.OtherGroup; | 
|             } | 
|             else | 
|             { | 
|                 throw new NotImplementedException(); | 
|             } | 
|         } | 
|   | 
|         public static int GetNextNotCompletedStatus<T>(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<int> 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(); | 
|             } | 
|         } | 
|     } | 
| } |