using System; using System.Collections.Generic; using System.Linq; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Caching; using Kreta.Framework.Caching.DictionaryItemTables; using Kreta.Framework.Util; using Kreta.Resources; namespace Kreta.BusinessLogic.Classes { public static class EnumExtensions { public static int ToInt32(this Enum enumValue) { var result = Convert.ToInt32(enumValue); return result; } public static string GetDisplayName(this bool value, BooleanDisplayFormatEnum booleanDisplayFormatEnum = BooleanDisplayFormatEnum.Teljes) { string result; switch (booleanDisplayFormatEnum) { case BooleanDisplayFormatEnum.Teljes: result = value ? CommonResource.Igen : CommonResource.Nem; break; case BooleanDisplayFormatEnum.IN: result = value ? "I" : "N"; break; case BooleanDisplayFormatEnum.TF: result = value ? "T" : "F"; break; default: throw new ArgumentException(); } return result; } public static string GetDisplayName(this bool? value, string defaultValue = "", BooleanDisplayFormatEnum booleanFormat = BooleanDisplayFormatEnum.Teljes) { var result = defaultValue; if (value.HasValue) { result = GetDisplayName(value.Value, booleanFormat); } return result; } public static string GetDisplayName(this int? enumIntValue, int tanevId, string defaultValue = "") where T : Enum { var result = defaultValue; if (enumIntValue.HasValue) { result = enumIntValue.Value.GetDisplayName(tanevId); } return result; } public static string GetDisplayName(this int enumIntValue, int tanevId) where T : Enum { string result; var enumType = typeof(T); //NOTE: Ha ManualEnums-ról van szó! if (enumType.AssemblyQualifiedName.Contains("Kreta.Enums.ManualEnums")) { var enumValue = ((T[])Enum.GetValues(enumType)).Single(x => x.ToInt32() == enumIntValue); result = enumValue.GetDisplayName(tanevId); return result; } //NOTE: Ha nem ManualEnums-ról van szó, akkor GeneratedEnums(csak és kizárólag ManualEnums-ra vagy GeneratedEnums-ra lehet meghívni a GetDisplayName-et!). // Ebben az esetben a szöveget kivétel nélkül a DictionaryTableCache-ből szedjük, így az Environment SQL-ek miatt is jó szöveg jön le a db-ből! result = enumIntValue.GetItemNameFromCache(tanevId); return result; } public static string GetDisplayName(this T enumValue, int tanevId) where T : Enum { var enumType = typeof(T); //NOTE: Ha ManualEnums-ról van szó! if (enumType.AssemblyQualifiedName.Contains("Kreta.Enums.ManualEnums")) { return FrameworkEnumExtensions.GetManualEnumNameFromCache(enumValue.ToInt32()); } //NOTE: Ha nem ManualEnums-ról van szó, akkor GeneratedEnums(csak és kizárólag ManualEnums-ra vagy GeneratedEnums-ra lehet meghívni a GetDisplayName-et!). // Ebben az esetben a szöveget kivétel nélkül a DictionaryTableCache-ből szedjük, így az Environment SQL-ek miatt is jó szöveg jön le a db-ből! var enumIntValue = enumValue.ToInt32(); var result = enumIntValue.GetItemNameFromCache(tanevId); return result; } public static int? GetIdByDisplayName(string adatszotarNeve, GeneratedAdatszotarTipusEnum adatszotarTipus, int tanevId) { if (string.IsNullOrWhiteSpace(adatszotarNeve)) { return null; } int? result = ((int)adatszotarTipus).GetItemsByType(tanevId).Single(x => x.Name == adatszotarNeve).Id; return result; } public static Dictionary EnumToDictionary(int tanevId, bool emptyItem = false, bool isValueInt = true, List removeValueList = null) where T : Enum { var enumType = typeof(T); if (enumType.BaseType != typeof(Enum)) { throw new ArgumentException("T must be of type System.Enum"); } IEnumerable values = (T[])Enum.GetValues(typeof(T)); var itemList = values.ToDictionary( x => isValueInt ? x.ToInt32().ToString() : Enum.GetName(typeof(T), x), x => x.GetDisplayName(tanevId)); var result = removeValueList != null ? itemList.Where(x => !removeValueList.Contains(x.Key)).ToDictionary(x => x.Key, x => x.Value) : itemList; if (emptyItem) { var list = new Dictionary { { "", CommonResource.KeremValasszon } }; result = list.Union(result).ToDictionary(k => k.Key, v => v.Value); } return result; } public static IList GetEnumDisplayNameList(int tanevId, List removeValueList = null) where T : Enum { var result = EnumToDictionary(tanevId, removeValueList: removeValueList).Values.OrderBy(o => o).ToList(); return result; } public static IDictionary GetAdatszotarDictElemekForTipus(int tanevId, GeneratedAdatszotarTipusEnum adatszotarTipus, List removeIdList = null, bool visibleOnly = false) { if (removeIdList == null) { removeIdList = new List(); } return ((int)adatszotarTipus).GetItemsByType(tanevId, visibleOnly).Where(x => !removeIdList.Contains(x.Id)).ToDictionary(x => x.Id, x => x.Name); } public static IList GetAdatszotarElemekForTipus(int tanevId, GeneratedAdatszotarTipusEnum adatszotarTipus, List removeIdList = null) { if (removeIdList == null) { removeIdList = new List(); } return GetAdatszotarDictElemekForTipus(tanevId, adatszotarTipus, removeIdList).Select(x => x.Value).ToList(); } public static List GetAllampolgarsagDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.Allampolgarsag); return result; } public static List GetMunkakorTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.MunkakorTipus); return result; } public static List GetOrszagTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.OrszagTipus); return result; } public static List GetCsoportTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.CsoportTipus); return result; } public static List GetOktatasiNevelesiFeladatDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.OktatasiNevelesiFeladat); return result; } public static List GetEvfolyamTipusDictionaryItems(int tanevId, bool? isOsszevont = null) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.EvfolyamTipus); return isOsszevont == null ? result : result.Where(x => x.IsOsszevont == isOsszevont).ToList(); } public static List GetNapTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.NapTipus); return result; } public static List GetSorolasOkaTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.SorolasOkaTipus); return result; } public static List GetErtekelesModDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.ErtekelesMod); return result; } public static List GetErtekelesTipusDictionaryItems(int tanevId, bool? isEgyszerAdhato = null) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.ErtekelesTipus); return isEgyszerAdhato == null ? result : result.Where(x => x.IsEgyszerAdhato == isEgyszerAdhato).ToList(); } public static List GetEsemenyTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.EsemenyTipus); return result; } public static List GetSzakkepesitesTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.SzakkepesitesTipus); return result; } public static List GetOraTulajdonsagTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.OraTulajdonsagTipus); return result; } public static List GetDokumentumKulcsszoTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.DokumentumKulcsszoTipus); return result; } public static List GetOktNevelesiKategoriaDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.OktNevelesiKategoria); return result; } public static List GetTavolletTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.TavolletTipus); return result; } public static List GetAgazatUjSzktTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.AgazatUjSzktTipus); return result; } public static List GetSzakmaTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.SzakmaTipus); return result; } public static List GetAgazatReszSzakmaTipusDictionaryItems(int tanevId) { var result = GetExtendedDictionaryItems(tanevId, (int)GeneratedAdatszotarTipusEnum.AgazatReszSzakmaTipus); return result; } private static List GetExtendedDictionaryItems(int tanevId, int generatedAdatszotarTipusEnumIntValue) where T : DictionaryItem { var dictionaryItems = generatedAdatszotarTipusEnumIntValue.GetItemsByType(tanevId); var tDictionaryItems = new List(); foreach (var dictionaryItem in dictionaryItems) { tDictionaryItems.Add((T)Activator.CreateInstance(typeof(T), dictionaryItem)); } return tDictionaryItems; } } }