public static List<DropDownEnumModel> GetCustomEnumByIdEnumType(int idEnumType, int idLanguageType)
        {
            List<DropDownEnumModel> lstRecueilCMs = new List<DropDownEnumModel>();

            List<CustomEnum> lstCE = CustomEnumBL.GetAllCustomEnums().Where(e => e.idCustomEnumType == idEnumType).OrderBy(e => e.OrderType).ToList();

            foreach (var e in lstCE)
            {
                LanguageContent objLangue = LanguageContentBL.GetAllLanguageContents().Where(l => l.NameKey == e.NameKey && l.idLanguageType == idLanguageType).FirstOrDefault<LanguageContent>();

                DropDownEnumModel objRCM = new DropDownEnumModel();
                objRCM.NameKey = e.NameKey;
                objRCM.Text = objLangue.LanguageContentString;
                objRCM.Value = e.Value;
                objRCM.OrderType = e.OrderType;
                objRCM.idCustomEnumType = e.idCustomEnumType;

                lstRecueilCMs.Add(objRCM);
            }

            return lstRecueilCMs;
        }
        /// <summary>
        /// Optimization : get all enums in dictionary
        /// Fetch enum languages once, not in loop
        /// </summary>
        /// <param name="idLanguageType"></param>
        /// <returns></returns>
        public static IDictionary<int, List<DropDownEnumModel>> GetCustomEnums(int idLanguageType)
        {
            IDictionary<int, List<DropDownEnumModel>> dicoDropDownEnumModels = new Dictionary<int, List<DropDownEnumModel>>();
            string currentHostCode = Upsilab.Business.Utility.SessionManager.GetHostCodeSession();

            //Get all ENUMs
            IList<CustomEnum> lstCustomEnums = CustomEnumBL.GetAllCustomEnums().Where(c => string.IsNullOrEmpty(c.HostCodes) || (!string.IsNullOrEmpty(c.HostCodes) && c.HostCodes.Contains(currentHostCode))).OrderBy(c => c.idCustomEnumType).OrderBy(c => c.OrderType).ToList();
            IList<int> lstCustomEnumTypes = lstCustomEnums.Select(c => c.idCustomEnumType).Distinct().ToList();

            //Get language regarding ENUMs here not in loop
            IList<LanguageContent> lstEnumLangues = LanguageContentBL.GetAllLanguageContents().Where(l => l.NameKey.Contains("_Enum_") && l.idLanguageType == idLanguageType).ToList<LanguageContent>();

            foreach (var customEnumType in lstCustomEnumTypes)
            {
                dicoDropDownEnumModels.Add(customEnumType, new List<DropDownEnumModel>());
            }

            //Fill dictionnary
            foreach (var customEnum in lstCustomEnums)
            {
                IList<DropDownEnumModel> lstDropDownEnumModels = dicoDropDownEnumModels[customEnum.idCustomEnumType];

                LanguageContent language = lstEnumLangues.Where(l => l.NameKey == customEnum.NameKey).FirstOrDefault<LanguageContent>();

                DropDownEnumModel dropDownEnumModel = new DropDownEnumModel()
                {
                    NameKey = customEnum.NameKey,
                    Text = (language != null) ? language.LanguageContentString : string.Empty,
                    Value = customEnum.Value,
                    OrderType = customEnum.OrderType,
                    idCustomEnumType = customEnum.idCustomEnumType
                };

                lstDropDownEnumModels.Add(dropDownEnumModel);
            }

            return dicoDropDownEnumModels;
        }