kreta/Kreta.WebApi/Naplo/Kreta.Naplo.BusinessLogic/V3/Enum/EnumSubqueries.cs
2024-03-13 00:33:46 +01:00

105 lines
3.8 KiB
C#

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<EnumResponse> GetNaploEnum(DefaultConnectionParameters dcp, EnumRequest request)
{
var engedelyezettEnumok = new List<string>()
{
"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<Enums.ManualEnums.CalendarOraTypeEnum>(dcp.TanevId);
}
if (request.EnumTipus.Contains("TanoraAllapotaEnum"))
{
return ManualEnumToList<Enums.ManualEnums.TanoraAllapotaEnum>(dcp.TanevId);
}
if (!System.Enum.TryParse(request.EnumTipus == "FeljegyzesTipus" ? "EsemenyTipus" : request.EnumTipus, out GeneratedAdatszotarTipusEnum enumErtek))
{
throw new BlException(BlExceptionType.ModelValidacio);
}
var enumList = new List<EnumResponse>();
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<ErtekelesModEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.ErtekelesTipus:
return new Adatszotar<ErtekelesTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.EsemenyTipus:
return new Adatszotar<EsemenyTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.MulasztasTipus:
return new Adatszotar<MulasztasTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.OsztalyzatTipus:
return new Adatszotar<OsztalyzatTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.IgazolasTipus:
return new Adatszotar<IgazolasTipusEnum>(enumId).Uid.Nev;
}
return string.Empty;
}
private static List<EnumResponse> ManualEnumToList<T>(int tanevId) where T : System.Enum
{
var enums = new List<EnumResponse>();
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<T>(tanevId)
});
}
return enums;
}
}
}