This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.Core;
using Kreta.Core.Domain;
using Kreta.Core.Domain.Interface;
using Kreta.Core.KIR.Domain.Model;
using Kreta.Core.KIR.Domain.Model.KirExport;
using Kreta.Core.KIR.Factory.Interface;
using Kreta.Core.KIR.Service.Interface;
namespace Kreta.BusinessLogic.Helpers
{
public partial class KirImportHelper
{
private const int KirListCacheExpirationInSeconds = 120;
private IKirService KirService { get; }
public string KretaKod { get; set; }
private Func<T, bool> ValidationFor4T<T>(FelhasznaloKirSearchCo felhasznaloKirSearchCo)
where T : class, IKirFelhasznalo
=> kirAlkalmazott => (string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.Nev) || kirAlkalmazott.SzuletesiNev.IndexOf(felhasznaloKirSearchCo.Nev, StringComparison.OrdinalIgnoreCase) >= 0) &&
(!felhasznaloKirSearchCo.SzuletesiDatumIg.HasValue || kirAlkalmazott.SzuletesiDatum <= felhasznaloKirSearchCo.SzuletesiDatumIg) &&
(!felhasznaloKirSearchCo.SzuletesiDatumTol.HasValue || kirAlkalmazott.SzuletesiDatum >= felhasznaloKirSearchCo.SzuletesiDatumTol) &&
(string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.OktatasiAzonosito) || kirAlkalmazott.OktatasiAzonosito.StartsWith(felhasznaloKirSearchCo.OktatasiAzonosito)) &&
(string.IsNullOrWhiteSpace(felhasznaloKirSearchCo.SzuletesiHely) || kirAlkalmazott.SzuletesiHely.StartsWith(felhasznaloKirSearchCo.SzuletesiHely));
private Func<T, bool> SearchFor4T<T>(string szuletesiNev, string anyjaNeve, DateTime szuletesiDatum, string szuletesiHely)
where T : class, IKirFelhasznalo
=> kirFelhasznalo => kirFelhasznalo.SzuletesiNev == szuletesiNev &&
kirFelhasznalo.AnyjaNeve == anyjaNeve &&
kirFelhasznalo.SzuletesiDatum == szuletesiDatum &&
kirFelhasznalo.SzuletesiHely == szuletesiHely;
public KirImportHelper(IKirServiceFactory kirServiceFactory, AuthHeaderModel authHeaderModel)
{
if (kirServiceFactory == null)
{
throw new ArgumentNullException(nameof(kirServiceFactory));
}
KirService = kirServiceFactory.GetKirService(authHeaderModel ?? throw new ArgumentNullException(nameof(authHeaderModel)));
}
public List<TelephelyModel> GetKirTelephelyList()
=> KirService.GetTelephelyList();
public string KretaTelephelyRegisztracio(int telephelyKod)
=> KirService.KretaTelephelyRegisztracio(
new KretaTelephelyRegisztracioRequestModel
{
TelephelyModel = new TelephelyModel
{
Kod = telephelyKod
}
});
public List<TOut> GetKirFelhasznaloList<TOut>(string cacheKey)
where TOut : class, IKirFelhasznalo, new()
{
var kirFelhasznaloCacheList = (List<TOut>)Cache.Get(cacheKey);
if (kirFelhasznaloCacheList == null)
{
var kirRequestModel = new KirRequestModel
{
KretaKod = KretaKod
};
var felhasznalo = new TOut();
if (felhasznalo is KirAlkalmazott)
{
kirFelhasznaloCacheList = KirService
.GetPedagogusList(kirRequestModel)
.ConvertAll(new Converter<AlkalmazottModel, KirAlkalmazott>(x => x)) as List<TOut>;
}
if (felhasznalo is KirTanulo)
{
kirFelhasznaloCacheList = KirService
.GetTanuloList(kirRequestModel)
.ConvertAll(new Converter<TanuloModel, KirTanulo>(x => x)) as List<TOut>;
}
Cache.Add(cacheKey, kirFelhasznaloCacheList, new CacheItemPolicy { AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddSeconds(KirListCacheExpirationInSeconds)) });
}
return kirFelhasznaloCacheList;
}
public List<T> GetKirFelhasznaloList<T>(FelhasznaloKirSearchCo felhasznaloKirSearchCo, string cacheKey)
where T : class, IKirFelhasznalo, new()
=> GetKirFelhasznaloList<T>(cacheKey)
.Where(ValidationFor4T<T>(felhasznaloKirSearchCo))
.ToList();
public TOut GetKirFelhasznaloAdatok<TIn, TOut>(Converter<TIn, TOut> converter, string cacheKey, string szuletesiNev, string anyjaNeve, DateTime szuletesiDatum, string szuletesiHely)
where TIn : class, IKirFelhasznalo, new()
where TOut : class
=> GetKirFelhasznaloList<TIn>(cacheKey)
.Where(SearchFor4T<TIn>(szuletesiNev, anyjaNeve, szuletesiDatum, szuletesiHely))
.Select(x => converter.Invoke(x))
.FirstOrDefault();
}
}