diff --git a/Lux.API/Controllers/WindowController.cs b/Lux.API/Controllers/WindowController.cs index a1df77c4..745bd05e 100644 --- a/Lux.API/Controllers/WindowController.cs +++ b/Lux.API/Controllers/WindowController.cs @@ -13,11 +13,12 @@ namespace Lux.API.Controllers { #region Public Constructors - public WindowController(IConfiguration config, IRedisService redisService, ImageCacheService imgServ) + public WindowController(IConfiguration config, IRedisService redisService, ImageCacheService imgServ, ConfigDataService confServ) { _config = config; _redisService = redisService; _imgService = imgServ; + _confService = confServ; pubChannel = _config.GetValue("ServerConf:PubChannel") ?? ""; } @@ -75,7 +76,7 @@ namespace Lux.API.Controllers } /// - /// Chiamata GET: riceve Json in formato serializzato, invia richiesta modo 3 (HardwareModelList) + /// Chiamata GET: invia richiesta modo 3 (HardwareModelList) che sarà poi salvata /// GET: api/window/hwlist /// /// id oggetto @@ -86,6 +87,19 @@ namespace Lux.API.Controllers Stopwatch sw = new Stopwatch(); sw.Start(); string hwContent = ""; + await sendHwReq(); + hwContent = "DONE"; + sw.Stop(); + Log.Info($"getHardwareList | {sw.Elapsed.TotalMilliseconds:N3} ms"); + return Ok(hwContent); + } + + /// + /// Esegue invio effettivo richiesta elenco HW list + /// + /// + private async Task sendHwReq() + { Dictionary DictExec = new Dictionary(); DictExec.Add("Mode", $"{(int)Enums.EngineQueryType.HardwareModelList}"); // da rivedere? @@ -96,10 +110,38 @@ namespace Lux.API.Controllers // da modificare con tipo richiesta... QuestionDTO currArgs = new QuestionDTO(nId, EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, DictExec); await _redisService.PublishAsync(pubChannel, currArgs.sProcessArgs); - hwContent = "DONE"; + } + + /// + /// Chiamata GET: + /// - se trova in cache risponde con elenco hw già ricevuto + /// - se non trova invia richiesta modo 3 (HardwareModelList) che sarà poi salvata + /// GET: api/window/hwlist/nome_produttore + /// + /// nome del produttore, es HW.AGB (default) + /// + [HttpGet("hwlist/{id}")] + public async Task>> getHardwareList(string id) + { + Stopwatch sw = new Stopwatch(); + sw.Start(); + string hwReq = id ?? "HW.AGB"; + var answ = _confService.ElencoHw(EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW, hwReq); + if (answ == null || answ.Count == 0) + { + await sendHwReq(); + answ = new List(); + } + // filtro quelli default/non significativi (famili=descript) + else + { + answ = answ + .Where(x => !x.FamilyName.Equals(x.Description, StringComparison.OrdinalIgnoreCase)) + .ToList(); + } sw.Stop(); Log.Info($"getHardwareList | {sw.Elapsed.TotalMilliseconds:N3} ms"); - return Ok(hwContent); + return Ok(answ); } /// @@ -224,6 +266,7 @@ namespace Lux.API.Controllers #region Private Properties private ImageCacheService _imgService { get; set; } + private ConfigDataService _confService { get; set; } #endregion Private Properties } diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj index 0e1e266f..f2cb7dc7 100644 --- a/Lux.API/Lux.API.csproj +++ b/Lux.API/Lux.API.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 0.9.2509.2916 + 0.9.2509.3007 @@ -65,7 +65,7 @@ - + diff --git a/Lux.API/Program.cs b/Lux.API/Program.cs index d7ef54a3..86926adb 100644 --- a/Lux.API/Program.cs +++ b/Lux.API/Program.cs @@ -48,6 +48,7 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddHostedService(); +builder.Services.AddSingleton(); var app = builder.Build();