using Egw.Window.Data;
using EgwCoreLib.Lux.Core.RestPayload;
using EgwCoreLib.Lux.Data.Controllers;
using EgwCoreLib.Lux.Data.DbModel.Config;
using EgwMultiEngineManager.Data;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using NLog;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Services
{
public class ConfigDataService : BaseServ
{
#region Public Constructors
public ConfigDataService(IConfiguration configuration, IConnectionMultiplexer RedisConn) : base(configuration, RedisConn)
{
// init implicito
Log.Info($"ConfigDataService | Init OK");
}
#endregion Public Constructors
#region Public Methods
///
/// Restituisce l'elenco dell'HW valido da cache REDIS
///
///
public List HwModelList(Constants.EXECENVIRONMENTS execEnvironment, string HwReq = "HW.AGB")
{
List result = new List();
// leggo obj da redis cache
var currKey = $"{redisBaseKey}:{execEnvironment}:HML:{HwReq}";
RedisValue rawData = redisDb.StringGet(currKey);
// prendo solo i valori validi (Name <> FamilyName)
if (rawData.HasValue)
{
var currList = JsonConvert.DeserializeObject>($"{rawData}");
result = currList ?? new List();
}
return result;
}
///
/// Restituisce l'elenco dei profili da cache REDIS
///
///
public List ProfileList(Constants.EXECENVIRONMENTS execEnvironment, string ProfReq = "Default")
{
List result = new List();
// leggo obj da redis cache
var currKey = $"{redisBaseKey}:{execEnvironment}:PROF:LIST:{ProfReq}";
RedisValue rawData = redisDb.StringGet(currKey);
// prendo solo i valori validi (Name <> FamilyName)
if (rawData.HasValue)
{
var currList = JsonConvert.DeserializeObject>($"{rawData}");
result = currList ?? new List();
}
return result;
}
///
/// Restituisce l'elenco dei profili da cache REDIS
///
///
public List ProfileThreshList(Constants.EXECENVIRONMENTS execEnvironment, string ProfReq = "Default")
{
List result = new List();
// leggo obj da redis cache
var currKey = $"{redisBaseKey}:{execEnvironment}:PROF:THRESH:{ProfReq}";
RedisValue rawData = redisDb.StringGet(currKey);
// prendo solo i valori validi (Name <> FamilyName)
if (rawData.HasValue)
{
var currList = JsonConvert.DeserializeObject>($"{rawData}");
result = currList ?? new List();
}
return result;
}
///
/// Restituisce il dizionario dei profili + relativa lista soglie da cache REDIS
///
///
public Dictionary> ProfileThreshDict(Constants.EXECENVIRONMENTS execEnvironment)
{
Dictionary> result = new Dictionary>();
// recupero profili per ciclare...
List profList = ProfileList(execEnvironment);
foreach (var prof in profList)
{
// leggo obj da redis cache
var currKey = $"{redisBaseKey}:{execEnvironment}:PROF:THRESH:{prof}";
RedisValue rawData = redisDb.StringGet(currKey);
// prendo solo i valori validi (Name <> FamilyName)
if (rawData.HasValue)
{
var currList = JsonConvert.DeserializeObject>($"{rawData}") ?? new List();
if (currList.Any())
{
result.Add(prof, currList);
}
}
}
return result;
}
#endregion Public Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private string redisBaseKey = "Lux";
#endregion Private Fields
}
}