using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System;
using System.Linq;
using System.Reflection;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;

namespace AMESCoreStudio.WebApi.Enum
{
    /// <summary>
    /// 工單警示通知
    /// </summary>
    public class EnumWipAlarm
    {
        /// <summary>
        /// WipAlarm_TypeId 類型
        /// </summary>
        public enum EnumTypeId
        {
            /// <summary>
            /// 工單號碼不良代碼累積超過
            /// </summary>
            [Description("工單號碼不良代碼累積超過")]
            [Display(Name = "工單號碼不良代碼累積超過")]
            BarCodeCheckNg = 1 ,

            /// <summary>
            /// 維修代碼累積超過
            /// </summary>
            [Description("維修代碼累積超過")]
            [Display(Name = "維修代碼累積超過")]
            PostNgComponent = 3,

            /// <summary>
            /// 治具到達預警提前通知
            /// </summary>
            [Description("治具到達預警提前通知")]
            [Display(Name = "治具到達預警提前通知")]
            OutfitAlert = 4,

            /// <summary>
            /// 治具使用次數已超過預計使用次數
            /// </summary>
            [Description("治具使用次數已超過預計使用次數")]
            [Display(Name = "治具使用次數已超過預計使用次數")]
            OutfitOutLimit = 5,

            /// <summary>
            /// 鋼板量測NG
            /// </summary>
            [Description("鋼板量測NG")]
            [Display(Name = "鋼板量測NG")]
            SteelPlateNg = 6,
        }

        /// <summary>
        /// Get Enum Display
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static string GetDisplayName(System.Enum enumValue)
        {
            return enumValue.GetType()?
           .GetMember(enumValue.ToString())?.First()?
           .GetCustomAttribute<DisplayAttribute>()?
           .Name;
        }
    }
}