Files
sockeye/server/biz/BizObjectNameFetcherDirect.cs
2022-12-16 06:01:23 +00:00

55 lines
1.8 KiB
C#

using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
namespace Sockeye.Biz
{
//Turn a type and ID into a displayable name
//Used by search and eventlog processor
internal static class BizObjectNameFetcherDirect
{
internal static string Name(SockType sockType, long id, long translationid, System.Data.Common.DbCommand cmd)
{
try
{
string ret;
cmd.CommandText = $"select PUBLIC.AYGETNAME({id}, {(int)sockType}, {translationid}) as m";
using (var dr = cmd.ExecuteReader())
{
if (dr.Read())
{
if (dr.IsDBNull(0))
ret = $"?? type:{sockType},id:{id}";
else
ret = dr.GetString(0);
}
else
{
ret = "-";
}
//return dr.Read() ? dr.GetString(0) : "-";
}
return ret;
}
catch
{
((ILogger)Sockeye.Util.ApplicationLogging.CreateLogger("BizObjectNameFetcherDirect")).LogError($"### Error fetching for type {sockType}");
throw;
}
}
//warning: use the above in a loop, not this one
internal static string Name(SockType sockType, long id, long translationId, Sockeye.Models.AyContext ct)
{
using (var command = ct.Database.GetDbConnection().CreateCommand())
{
ct.Database.OpenConnection();
return Name(sockType, id,translationId, command);
}
}
}//eoc
}//eons