using System.Collections.Generic; using Kreta.BusinessLogic.Classes; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Enums; using Kreta.Naplo.Domain.V3.Adatszotar; using Kreta.Naplo.Domain.V3.Common; using Kreta.Naplo.Domain.V3.Enum; using Kreta.Resources; namespace Kreta.Naplo.BusinessLogic.V3.Enum { internal static class EnumSubqueries { internal static List GetNaploEnum(DefaultConnectionParameters dcp, EnumRequest request) { var engedelyezettEnumok = new List() { "ErtekelesMod", "ErtekelesTipus", "FeljegyzesTipus", "MulasztasTipus", "OsztalyzatTipus", "IgazolasTipus", "CalendarOraTypeEnum", "TanoraAllapotaEnum" }; if (!engedelyezettEnumok.Contains(request.EnumTipus)) { throw new BlException(ErrorResource.NemEngedelyezettVagyNemLetezoEnum, BlExceptionType.ModelValidacio); } if (request.EnumTipus.Contains("CalendarOraTypeEnum")) { return ManualEnumToList(dcp.TanevId); } if (request.EnumTipus.Contains("TanoraAllapotaEnum")) { return ManualEnumToList(dcp.TanevId); } if (!System.Enum.TryParse(request.EnumTipus == "FeljegyzesTipus" ? "EsemenyTipus" : request.EnumTipus, out GeneratedAdatszotarTipusEnum enumErtek)) { throw new BlException(BlExceptionType.ModelValidacio); } var enumList = new List(); var adatszotar = EnumExtensions.GetAdatszotarDictElemekForTipus(dcp.TanevId, enumErtek, null, true); foreach (var adatszotarElem in adatszotar) { enumList.Add(new EnumResponse { Id = adatszotarElem.Key, Nev = GetEnumNev(enumErtek, adatszotarElem.Key), Leiras = adatszotarElem.Value }); } return enumList; } private static string GetEnumNev(GeneratedAdatszotarTipusEnum enumErtek, int enumId) { switch (enumErtek) { case GeneratedAdatszotarTipusEnum.ErtekelesMod: return new Adatszotar(enumId).Uid.Nev; case GeneratedAdatszotarTipusEnum.ErtekelesTipus: return new Adatszotar(enumId).Uid.Nev; case GeneratedAdatszotarTipusEnum.EsemenyTipus: return new Adatszotar(enumId).Uid.Nev; case GeneratedAdatszotarTipusEnum.MulasztasTipus: return new Adatszotar(enumId).Uid.Nev; case GeneratedAdatszotarTipusEnum.OsztalyzatTipus: return new Adatszotar(enumId).Uid.Nev; case GeneratedAdatszotarTipusEnum.IgazolasTipus: return new Adatszotar(enumId).Uid.Nev; } return string.Empty; } private static List ManualEnumToList(int tanevId) where T : System.Enum { var enums = new List(); int enumId = 0; foreach (var item in System.Enum.GetValues(typeof(T))) { enumId = (int)item; enums.Add(new EnumResponse { Id = enumId, Nev = item.ToString(), Leiras = enumId.GetDisplayName(tanevId) }); } return enums; } } }