diff --git a/MP.Data/Controllers/MpInveController.cs b/MP.Data/Controllers/MpInveController.cs
index 177b8a01..e001a5ec 100644
--- a/MP.Data/Controllers/MpInveController.cs
+++ b/MP.Data/Controllers/MpInveController.cs
@@ -36,6 +36,7 @@ namespace MP.Data.Controllers
dbResult = dbCtx
.DbInveSess
.Where(x => x.DtEnd == null)
+ .Include(m=>m.AnagMagNav)
.AsNoTracking()
.OrderByDescending(x => x.DtStart)
.ToList();
@@ -57,6 +58,7 @@ namespace MP.Data.Controllers
dbResult = dbCtx
.DbInveSess
.Where(x => x.DtStart >= FromDate && x.DtStart <= ToDate && x.DtEnd != null)
+ .Include(m=>m.AnagMagNav)
.AsNoTracking()
.OrderByDescending(x => x.DtStart)
.ToList();
@@ -88,6 +90,23 @@ namespace MP.Data.Controllers
}
return dbResult;
}
+ ///
+ /// Elenco Magazzini
+ ///
+ ///
+ public List ElencoMagazzini()
+ {
+ List dbResult = new List();
+ using (var dbCtx = new MoonPro_InveContext(_configuration))
+ {
+ dbResult = dbCtx
+ .DbAnagMag
+ .AsNoTracking()
+ .OrderBy(x => x.MagID)
+ .ToList();
+ }
+ return dbResult;
+ }
///
/// Elenco operatori
@@ -120,6 +139,55 @@ namespace MP.Data.Controllers
}
return dbResult;
}
+
+ ///
+ /// insert di un record sessione
+ ///
+ ///
+ public async Task InsertNewSessione(InventorySessionModel newRec)
+ {
+ bool fatto = false;
+ using (var dbCtx = new MoonPro_InveContext(_configuration))
+ {
+ try
+ {
+ dbCtx
+ .DbInveSess
+ .Add(newRec);
+ await dbCtx.SaveChangesAsync();
+ fatto = true;
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione durante InsertNewSessione{Environment.NewLine}{exc}");
+ }
+ }
+ return fatto;
+ }
+ ///
+ /// delete sessione
+ ///
+ ///
+ public async Task deleteSessione(InventorySessionModel record)
+ {
+ bool fatto = false;
+ using (var dbCtx = new MoonPro_InveContext(_configuration))
+ {
+ try
+ {
+ dbCtx
+ .DbInveSess
+ .Remove(record);
+ await dbCtx.SaveChangesAsync();
+ fatto = true;
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione durante deleteSessione{Environment.NewLine}{exc}");
+ }
+ }
+ return fatto;
+ }
#endregion Public Methods
#region Private Fields
diff --git a/MP.INVE/Data/MiDataService.cs b/MP.INVE/Data/MiDataService.cs
index eb86755a..d27875dd 100644
--- a/MP.INVE/Data/MiDataService.cs
+++ b/MP.INVE/Data/MiDataService.cs
@@ -66,6 +66,21 @@ namespace MP.INVE.Data
{
}
+ public async Task InsertNewSessione(InventorySessionModel newSess)
+ {
+ // aggiungo record al DB
+ bool answ = await dbController.InsertNewSessione(newSess);
+
+ return answ;
+ }
+ public async Task deleteSessione(InventorySessionModel session)
+ {
+ // elimino record dal DB
+ bool answ = await dbController.deleteSessione(session);
+
+ return answ;
+ }
+
public List ElencoOperatori(int matrOpr, string authkey)
{
Stopwatch stopWatch = new Stopwatch();
@@ -143,6 +158,36 @@ namespace MP.INVE.Data
return result;
}
+ public List ElencoMagazzini()
+ {
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ List result = new List();
+ string source = "DB";
+ // cerco in redis...
+ RedisValue rawData = redisDb.StringGet(redisMagList);
+ if (!string.IsNullOrEmpty($"{rawData}"))
+ {
+ result = JsonConvert.DeserializeObject>($"{rawData}");
+ source = "REDIS";
+ }
+ else
+ {
+ result = dbController.ElencoMagazzini();
+ // serializzo e salvo...
+ rawData = JsonConvert.SerializeObject(result);
+ redisDb.StringSetAsync(redisMagList, rawData, getRandTOut(redisLongTimeCache));
+ }
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Debug($"ElencoMagazzini Read from {source}: {ts.TotalMilliseconds}ms");
+ if (result == null)
+ {
+ result = new List();
+ }
+ return result;
+ }
+
public List InventSessHistList(DateTime dtStart, DateTime dtEnd)
{
Stopwatch stopWatch = new Stopwatch();
@@ -195,6 +240,42 @@ namespace MP.INVE.Data
double rndValue = (double)stdMinutes + (double)rand.Next(1, 60) / 60;
return TimeSpan.FromMinutes(rndValue);
}
+ public async Task FlushRedisCache()
+ {
+ await Task.Delay(1);
+ RedisValue pattern = new RedisValue($"{redisBaseAddr}*");
+ bool answ = await ExecFlushRedisPattern(pattern);
+ return answ;
+ }
+
+ ///
+ /// Esegue flush memoria redis dato pattern
+ ///
+ ///
+ ///
+ private async Task ExecFlushRedisPattern(RedisValue pattern)
+ {
+ bool answ = false;
+ var listEndpoints = redisConnAdmin.GetEndPoints();
+ foreach (var endPoint in listEndpoints)
+ {
+ //var server = redisConnAdmin.GetServer(listEndpoints[0]);
+ var server = redisConnAdmin.GetServer(endPoint);
+ if (server != null)
+ {
+ var keyList = server.Keys(redisDb.Database, pattern);
+ foreach (var item in keyList)
+ {
+ await redisDb.KeyDeleteAsync(item);
+ }
+ // brutalmente rimuovo intero contenuto DB... DANGER
+ //await server.FlushDatabaseAsync();
+ answ = true;
+ }
+ }
+
+ return answ;
+ }
#endregion Protected Methods
@@ -204,6 +285,7 @@ namespace MP.INVE.Data
private const string redisElencoOperatori = redisBaseAddr + ":ListOperatori";
private const string redisSessionCurrList = redisBaseAddr + ":ListSessHist";
private const string redisSessionHistList = redisBaseAddr + ":ListSessCurr";
+ private const string redisMagList = redisBaseAddr + ":ListMag";
private static IConfiguration _configuration = null!;
private static ILogger _logger = null!;