kreta/Kreta.WebApi/Ellenorzo/Kreta.Ellenorzo.BL/VN/Intezmeny/IntezmenySubqueries.cs
2024-03-13 00:33:46 +01:00

64 lines
2.3 KiB
C#

using System;
using System.Runtime.Caching;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Util;
using Kreta.Ellenorzo.Dao.VN.Ellenorzo;
using Kreta.Ellenorzo.Domain.VN.Common;
using Kreta.Ellenorzo.Domain.VN.Intezmeny;
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
namespace Kreta.Ellenorzo.BL.VN.Intezmeny
{
internal static class IntezmenySubqueries
{
internal static IntezmenyAdatok GetSajatIntezmenyAdatok(DefaultConnectionParameters dcp)
{
var intezmenyAdatok = new IntezmenyHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetIntezmenyiAdatok();
var response = new IntezmenyAdatok
{
Uid = new IntezmenyUid(intezmenyAdatok.IntezmenyId),
Azonosito = intezmenyAdatok.IntezmenyAzonosito,
TeljesNev = intezmenyAdatok.Nev,
RovidNev = intezmenyAdatok.RovidNev
};
return response;
}
internal static IntezmenyAdatokDao GetIntezmenyAdatokFromCache(string intezmenyAzonosito)
{
var cache = MemoryCache.Default;
var cacheKey = $"{intezmenyAzonosito}_mobileIntezmenyAdatok";
if (!(cache[cacheKey] is IntezmenyAdatokDao intezmenyAdatok))
{
intezmenyAdatok = new IntezmenyAdatokDao();
Dal.MobileConnection.Run(
intezmenyAzonosito,
null,
h =>
{
intezmenyAdatok = h.IntezmenyDal().GetIntezmenyIdAktivTanevIdByAzonosito(intezmenyAzonosito).Tables[0].Rows[0].ToDao<IntezmenyAdatokDao>();
});
var policy = new CacheItemPolicy
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(20))
};
cache.Set(cacheKey, intezmenyAdatok, policy);
}
return intezmenyAdatok;
}
internal static void RemoveIntezemenyAdatokCache(string intezmenyAzonosito)
{
_ = MemoryCache.Default.Remove($"{intezmenyAzonosito}_mobileIntezmenyAdatok");
}
}
}