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";