diff --git a/MP.Data/Controllers/MpInveController.cs b/MP.Data/Controllers/MpInveController.cs index 854a6b78..005b46eb 100644 --- a/MP.Data/Controllers/MpInveController.cs +++ b/MP.Data/Controllers/MpInveController.cs @@ -51,8 +51,29 @@ namespace MP.Data.Controllers #endregion gestione config #region gestione scansioni + /// - /// Elenco Scansioni dato Id sessione inventario + /// Elenco Scansioni Totali + /// + /// + public List ScanList() + { + List dbResult = new List(); + using (var dbCtx = new MoonPro_InveContext(_configuration)) + { + dbResult = dbCtx + .DbScanData + .AsNoTracking() + .OrderByDescending(x => x.DtScan) + .ToList(); + } + return dbResult; + } + + +#if false + /// + /// Elenco Scansioni Totali /// /// /// @@ -63,12 +84,64 @@ namespace MP.Data.Controllers { dbResult = dbCtx .DbScanData - .Where(x => x.InveSessID == InveSessId) .AsNoTracking() + .Where(x => x.InveSessID == InveSessId) .OrderByDescending(x => x.DtScan) .ToList(); } return dbResult; + } +#endif + + /// + /// Elenco Scansioni dato Id sessione inventario + /// + /// + /// + public async Task updateScan(ScanDataModel editRec) + { + bool fatto = false; + using (var dbCtx = new MoonPro_InveContext(_configuration)) + { + try + { + + var currRec = dbCtx + .DbScanData + .Where(x => x.ScanID == editRec.ScanID) + .FirstOrDefault(); + if (currRec != null) + { + currRec.ScanID = editRec.ScanID; + currRec.CodArticolo = editRec.CodArticolo; + currRec.DtScan = editRec.DtScan; + currRec.UserScan = editRec.UserScan; + currRec.ScanValue = editRec.ScanValue; + currRec.IsForced = editRec.IsForced; + currRec.Lotto = editRec.Lotto; + currRec.RifExt = editRec.RifExt; + currRec.Qty = editRec.Qty; + currRec.Note = editRec.Note; + currRec.IsKnown = editRec.IsKnown; + currRec.IsUnique = editRec.IsUnique; + currRec.InveSessID = editRec.InveSessID; + dbCtx.Entry(currRec).State = EntityState.Modified; + } + else + { + dbCtx + .DbScanData + .Add(editRec); + } + await dbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante ScanBySession{Environment.NewLine}{exc}"); + } + } + return fatto; } /// @@ -146,7 +219,7 @@ namespace MP.Data.Controllers .Where(s => (s.MatrOpr > 0) && (s.MatrOpr == matrOpr) && (s.authKey == authKey)) .AsNoTracking() .ToList(); - if(dbResult.Count == 1) + if (dbResult.Count == 1) { answ = true; } @@ -276,7 +349,7 @@ namespace MP.Data.Controllers { dbResult = dbCtx .DbUdcData - .Include(m=>m.lottoNav) + .Include(m => m.lottoNav) .AsNoTracking() .OrderByDescending(x => x.UDC) .ToList(); @@ -302,7 +375,7 @@ namespace MP.Data.Controllers .OrderByDescending(x => x.UDC) .ToList(); - if(dbResult.Count == 1) + if (dbResult.Count == 1) { answ = true; } diff --git a/MP.INVE/Data/MiDataService.cs b/MP.INVE/Data/MiDataService.cs index c0381993..e02d0e1f 100644 --- a/MP.INVE/Data/MiDataService.cs +++ b/MP.INVE/Data/MiDataService.cs @@ -297,6 +297,72 @@ namespace MP.INVE.Data return result; } + public List ScanList() + { + string source = ""; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + List? result = new List(); + // cerco in redis... + RedisValue rawData = redisDb.StringGet(redisScanBaseAddr); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + + source = "REDIS"; + } + else + { + result = dbController.ScanList(); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + redisDb.StringSetAsync(redisScanBaseAddr, rawData, getRandTOut(redisLongTimeCache)); + source = "DB"; + } + if (result == null) + { + result = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ScanList Read from {source}: {ts.TotalMilliseconds}ms"); + return result; + } + public List ScanBySession(int idSessione) + { + string source = ""; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + List? result = new List(); + // cerco in redis... + { + var ListAll = ScanList(); + result = ListAll.Where(x => x.InveSessID == idSessione).ToList(); + if (result == null) + { + result = new List(); + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ScanBySession Read from {source}: {ts.TotalMilliseconds}ms"); + return result; + } + } + + /// + /// Aggiornamento record selezionato + /// + /// + /// + public async Task UpdateScan(ScanDataModel currRec) + { + var dbResult = await dbController.updateScan(currRec); + // elimino cache redis... + RedisValue pattern = new RedisValue(redisScanBaseAddr); + bool answ = await ExecFlushRedisPattern(pattern); + await Task.Delay(1); + return dbResult; + } public List ElencoUDC() { string source = ""; @@ -524,7 +590,7 @@ namespace MP.INVE.Data private const string redisUdcBaseAddr = ":UDC"; private const string redisLottiBaseAddr = ":Lotti"; private const string redisConfigBaseAddr = ":Config"; - private const string redisScanBaseAddr = ":Config"; + private const string redisScanBaseAddr = redisBaseAddr + ":Scan"; private const string redisElencoOperatori = redisBaseAddr + redisOperatoriBaseAddr + ":ListOperatori"; private const string redisOperatoreLogged = redisBaseAddr + redisOperatoriBaseAddr + ":OperatoreLogged"; private const string redisSessionCurrList = redisBaseAddr + redisSessionBaseAddr + ":ListSessHist";