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 } }