diff --git a/MP.Data/Controllers/MpInveController.cs b/MP.Data/Controllers/MpInveController.cs index 09d439cc..854a6b78 100644 --- a/MP.Data/Controllers/MpInveController.cs +++ b/MP.Data/Controllers/MpInveController.cs @@ -47,15 +47,10 @@ namespace MP.Data.Controllers .ToList(); } return dbResult; - } + } #endregion gestione config - - - - - - + #region gestione scansioni /// /// Elenco Scansioni dato Id sessione inventario /// @@ -76,6 +71,41 @@ namespace MP.Data.Controllers return dbResult; } + /// + /// Inserisco nuova scansione + /// + /// + /// + + /// + /// insert di un record sessione + /// + /// + public async Task InsertNewScansione(ScanDataModel newRec) + { + bool fatto = false; + using (var dbCtx = new MoonPro_InveContext(_configuration)) + { + try + { + dbCtx + .DbScanData + .Add(newRec); + await dbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante InsertNewScansione{Environment.NewLine}{exc}"); + } + } + return fatto; + } + + + #endregion gestione scansioni + + #region gestione operatori /// diff --git a/MP.INVE/Data/MiDataService.cs b/MP.INVE/Data/MiDataService.cs index dd2b6258..c0381993 100644 --- a/MP.INVE/Data/MiDataService.cs +++ b/MP.INVE/Data/MiDataService.cs @@ -69,6 +69,84 @@ namespace MP.INVE.Data { } + + public async Task> ConfigGetAll() + { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + List? result = new List(); + string source = "DB"; + // cerco in redis... + RedisValue rawData = await redisDb.StringGetAsync(redisConfigBaseAddr); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + source = "REDIS"; + } + else + { + result = await Task.FromResult(dbController.ConfigGetAll()); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + await redisDb.StringSetAsync(redisConfigBaseAddr, rawData, getRandTOut(redisLongTimeCache)); + source = "DB"; + } + if (result == null) + { + result = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ConfigGetAll Read from {source}: {ts.TotalMilliseconds}ms"); + return result; + } + + /// + /// Restituisce valore della stringa (SE disponibile) + /// + /// + /// + public async Task tryGetConfig(string keyName) + { + string answ = ""; + // preselezione valori + var configData = await ConfigGetAll(); + var currRec = configData.FirstOrDefault(x => x.Chiave == keyName); + if (currRec != null) + { + answ = currRec.Valore; + } + + return answ; + } + + /// + /// Reset dati cache config + /// + /// + public async Task ConfigResetCache() + { + await redisDb.StringSetAsync(redisConfigBaseAddr, ""); + } + + + public async Task InsertNewScansione(ScanDataModel newScan) + { + bool result = false; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + result = await dbController.InsertNewScansione(newScan); + // elimino cache redis... + RedisValue pattern = new RedisValue(redisScanBaseAddr); + bool answ = await ExecFlushRedisPattern(pattern); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"InsertNewScansione | Id scansione: {newScan.ScanID} | Id sessione: {newScan.InveSessID} | {ts.TotalMilliseconds}ms"); + return result; + // aggiungo record al DB + } + + public async Task InsertNewSessione(InventorySessionModel newSess) { bool result = false; @@ -80,7 +158,7 @@ namespace MP.INVE.Data bool answ = await ExecFlushRedisPattern(pattern); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; - Log.Debug($"InsertNewSessione | Id sessione: {newSess.InveSessID} | Id sessione: {newSess.Description} | {ts.TotalMilliseconds}ms"); + Log.Debug($"InsertNewSessione | Id sessione: {newSess.InveSessID} | Descrizione sessione: {newSess.Description} | {ts.TotalMilliseconds}ms"); return result; // aggiungo record al DB } @@ -406,16 +484,6 @@ namespace MP.INVE.Data bool answ = await ExecFlushRedisPattern(pattern); return answ; } -#if false - - public async Task FlushRedisCache(string keyPattern) - { - await Task.Delay(1); - RedisValue pattern = new RedisValue($"{keyPattern}*"); - bool answ = await ExecFlushRedisPattern(pattern); - return answ; - } -#endif /// /// Esegue flush memoria redis dato pattern @@ -455,6 +523,8 @@ namespace MP.INVE.Data private const string redisOperatoriBaseAddr = ":Operatore"; private const string redisUdcBaseAddr = ":UDC"; private const string redisLottiBaseAddr = ":Lotti"; + private const string redisConfigBaseAddr = ":Config"; + private const string redisScanBaseAddr = ":Config"; private const string redisElencoOperatori = redisBaseAddr + redisOperatoriBaseAddr + ":ListOperatori"; private const string redisOperatoreLogged = redisBaseAddr + redisOperatoriBaseAddr + ":OperatoreLogged"; private const string redisSessionCurrList = redisBaseAddr + redisSessionBaseAddr + ":ListSessHist";