diff --git a/MP.Core/Utils.cs b/MP.Core/Utils.cs
index df5f8ec3..81d30f39 100644
--- a/MP.Core/Utils.cs
+++ b/MP.Core/Utils.cs
@@ -13,6 +13,8 @@ namespace MP.Core
public const string redisAnagGruppi = redisBaseAddr + "Cache:AnagGruppi";
public const string redisAnagStati = redisBaseAddr + "Cache:AnagStati";
+ public const string redisLinkMenu = redisBaseAddr + "Cache:LinkMenu";
+
public const string redisArtByDossier = redisBaseAddr + "Cache:ArtByDossier";
public const string redisArtList = redisBaseAddr + "Cache:ArtList";
diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs
index c1d5e02d..e040f492 100644
--- a/MP.Data/Controllers/MpSpecController.cs
+++ b/MP.Data/Controllers/MpSpecController.cs
@@ -2531,17 +2531,15 @@ namespace MP.Data.Controllers
///
///
///
- public List TemplateKitFilt(string KitCode, string codChild)
+ public async Task> TemplateKitFiltAsync(string KitCode, string codChild)
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbSetTempKit
- .Where(x => (string.IsNullOrEmpty(KitCode) && string.IsNullOrEmpty(codChild)) || (x.CodArtParent.Contains(KitCode) && !string.IsNullOrEmpty(KitCode)) || (x.CodArtChild.Contains(codChild) && !string.IsNullOrEmpty(codChild)))
- .AsNoTracking()
- .ToList();
- }
+ using var dbCtx = new MoonProContext(options);
+ dbResult = await dbCtx
+ .DbSetTempKit
+ .Where(x => (string.IsNullOrEmpty(KitCode) && string.IsNullOrEmpty(codChild)) || (x.CodArtParent.Contains(KitCode) && !string.IsNullOrEmpty(KitCode)) || (x.CodArtChild.Contains(codChild) && !string.IsNullOrEmpty(codChild)))
+ .AsNoTracking()
+ .ToListAsync();
return dbResult;
}
diff --git a/MP.Data/Services/TabDataService.cs b/MP.Data/Services/TabDataService.cs
index 0f9f4397..51ad1231 100644
--- a/MP.Data/Services/TabDataService.cs
+++ b/MP.Data/Services/TabDataService.cs
@@ -3498,7 +3498,7 @@ namespace MP.Data.Services
result = new List();
}
sw.Stop();
- Log.Debug($"TemplateKitFilt | {source} | {sw.Elapsed.TotalMilliseconds}ms");
+ Log.Debug($"TemplateKitFiltAsync | {source} | {sw.Elapsed.TotalMilliseconds}ms");
return result;
}
diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs
index 13acb697..8c23d654 100644
--- a/MP.SPEC/Data/MpDataService.cs
+++ b/MP.SPEC/Data/MpDataService.cs
@@ -290,6 +290,7 @@ namespace MP.SPEC.Data
);
}
+#if false
public async Task> AnagTipoArtLvAsync()
{
using var activity = ActivitySource.StartActivity("AnagTipoArtLvAsync");
@@ -318,6 +319,22 @@ namespace MP.SPEC.Data
activity?.Stop();
LogTrace($"AnagTipoArtLvAsync Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
return result;
+ }
+#endif
+
+ ///
+ /// Restituisce elenco tipi articolo livello anagrafica
+ ///
+ ///
+ public async Task> AnagTipoArtLvAsync()
+ {
+ return await GetOrFetchAsync(
+ operationName: "AnagTipoArtLvAsync",
+ cacheKey: Utils.redisTipoArt,
+ expiration: TimeSpan.FromMinutes(redisLongTimeCache),
+ fetchFunc: async () => await dbController.AnagTipoArtLvAsync() ?? new List(),
+ tagList: [Utils.redisTipoArt]
+ );
}
///
@@ -835,18 +852,18 @@ namespace MP.SPEC.Data
}
///
- /// Elenco link validi
+ /// Elenco link validi per il menu
///
///
public async Task> ElencoLinkAsync()
{
- using var activity = ActivitySource.StartActivity("ElencoLinkAsync");
- string source = "DB";
- var linkList = await dbController.ElencoLinkAsync();
- activity?.SetTag("data.source", source);
- activity?.Stop();
- LogTrace($"ElencoLinkAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
- return linkList;
+ return await GetOrFetchAsync(
+ operationName: "ElencoLinkAsync",
+ cacheKey: Utils.redisLinkMenu,
+ expiration: TimeSpan.FromMinutes(redisLongTimeCache),
+ fetchFunc: async () => await dbController.ElencoLinkAsync() ?? new List(),
+ tagList: [Utils.redisLinkMenu]
+ );
}
///
@@ -1797,6 +1814,28 @@ namespace MP.SPEC.Data
return result;
}
+ public async Task> MachineWithOdlAsync()
+ {
+ string redisKey = Utils.redisOdlCurrByMac;
+
+ return await GetOrFetchAsync(
+ operationName: "MachineWithOdlAsync",
+ cacheKey: redisKey,
+ expiration: TimeSpan.FromSeconds(3),
+ fetchFunc: async () =>
+ {
+ var rawData = await dbController.OdlGetCurrentAsync();
+ var dbResult = rawData
+ .Select(x => x.IdxMacchina)
+ .Distinct()
+ .ToList();
+
+ return dbResult ?? new List();
+ },
+ tagList: [Utils.redisOdlCurrByMac]
+ );
+ }
+
///
/// Recupero info Machine-IOB x TAB (da info registrate IOB-WIN --> MP-IO)
///
@@ -2000,28 +2039,6 @@ namespace MP.SPEC.Data
return dbResult;
}
- public async Task> MachineWithOdlAsync()
- {
- string redisKey = Utils.redisOdlCurrByMac;
-
- return await GetOrFetchAsync(
- operationName: "MachineWithOdlAsync",
- cacheKey: redisKey,
- expiration: TimeSpan.FromSeconds(3),
- fetchFunc: async () =>
- {
- var rawData = await dbController.OdlGetCurrentAsync();
- var dbResult = rawData
- .Select(x => x.IdxMacchina)
- .Distinct()
- .ToList();
-
- return dbResult ?? new List();
- },
- tagList: [Utils.redisOdlCurrByMac]
- );
- }
-
///
/// ODL correnti (tutti)
///
@@ -2770,33 +2787,23 @@ namespace MP.SPEC.Data
///
/// Elenco Template KIT da ricerca
///
- ///
- ///
+ /// Codice articolo padre
+ /// Codice articolo figlio
///
public async Task> TemplateKitFiltAsync(string codParent, string codChild)
{
using var activity = ActivitySource.StartActivity("TemplateKitFiltAsync");
string source = "DB";
- List? result = new List();
- // cerco in redis...
string currKey = $"{Utils.redisKitTempl}:{codParent}:{codChild}";
- RedisValue rawData = await redisDb.StringGetAsync(currKey);
- if (rawData.HasValue)
- {
- result = JsonConvert.DeserializeObject>($"{rawData}");
- source = "REDIS";
- }
- else
- {
- result = dbController.TemplateKitFilt(codParent, codChild);
- // serializzo e salvo...
- rawData = JsonConvert.SerializeObject(result);
- await redisDb.StringSetAsync(currKey, rawData, TimeSpan.FromMinutes(redisLongTimeCache));
- }
- if (result == null)
- {
- result = new List();
- }
+
+ var result = await GetOrFetchAsync(
+ operationName: "TemplateKitFiltAsync",
+ cacheKey: currKey,
+ expiration: TimeSpan.FromMinutes(redisLongTimeCache),
+ fetchFunc: async () => await dbController.TemplateKitFiltAsync(codParent, codChild) ?? new List(),
+ tagList: [Utils.redisKitTempl]
+ );
+
activity?.SetTag("data.source", source);
activity?.SetTag("result.count", result.Count);
activity?.Stop();
@@ -3312,9 +3319,11 @@ namespace MP.SPEC.Data
case "DB":
LogTrace($"{operationName} | {source} | {activity?.Duration.TotalMilliseconds:F4} ms", reqLevel: NLog.LogLevel.Info);
break;
+
case "REDIS":
LogTrace($"{operationName} | {source} | {activity?.Duration.TotalMilliseconds:F4} ms", reqLevel: NLog.LogLevel.Debug);
break;
+
default:
LogTrace($"{operationName} | {source} | {activity?.Duration.TotalMilliseconds:F4} ms");
break;