kreta/Kreta.BusinessLogic/Classes/MobileApi/Common/Co/DefaultConnectionParameters.cs
2024-03-13 00:33:46 +01:00

74 lines
2.3 KiB
C#

using System;
using System.Data;
using System.Runtime.Caching;
using Kreta.DataAccessManual;
namespace Kreta.BusinessLogic.Classes.MobileApi.Common.Co
{
public class DefaultConnectionParameters
{
private class IntezmenyAdatok
{
public int TanevId { get; set; }
public int IntezmenyId { get; set; }
public string IntezmenyNev { get; set; }
}
public string IntezmenyAzonosito { get; }
public int TanevId { get; }
public int IntezmenyId { get; }
public string IntezmenyNev { get; }
public int FelhasznaloId { get; }
public DefaultConnectionParameters(MobileUser mobileUser)
{
this.FelhasznaloId = mobileUser.ActualUserId;
this.IntezmenyAzonosito = mobileUser.InstituteCode;
this.TanevId = mobileUser.SchoolYearId;
var intezmenyAdatok = GetIntezmenyAdatokFromCache();
this.IntezmenyId = intezmenyAdatok.IntezmenyId;
this.IntezmenyNev = intezmenyAdatok.IntezmenyNev;
}
private IntezmenyAdatok GetIntezmenyAdatokFromCache()
{
var cache = MemoryCache.Default;
string cacheKey = $"{IntezmenyAzonosito}_mobileIntezmenyAdatok";
var intezmenyAdatok = cache[cacheKey] as IntezmenyAdatok;
if (intezmenyAdatok == null)
{
intezmenyAdatok = GetIntezmenyAdatok();
var policy = new CacheItemPolicy
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(20))
};
cache.Set(cacheKey, intezmenyAdatok, policy);
}
return intezmenyAdatok;
}
private IntezmenyAdatok GetIntezmenyAdatok()
{
return Dal.MobileConnection.Run(IntezmenyAzonosito, TanevId, h =>
{
var intezmenyAdatok = h.IntezmenyDal().GetIntezmenyIdAndNevByAzonosito(IntezmenyAzonosito);
var returnIntezmenyAdatokObject = new IntezmenyAdatok
{
IntezmenyId = intezmenyAdatok.Tables[0].Rows[0].Field<int>("Id"),
IntezmenyNev = intezmenyAdatok.Tables[0].Rows[0].Field<string>("Nev")
};
return returnIntezmenyAdatokObject;
}, FelhasznaloId);
}
}
}