diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs
index 14939557..777ad5e8 100644
--- a/MP.SPEC/Data/MpDataService.cs
+++ b/MP.SPEC/Data/MpDataService.cs
@@ -627,88 +627,6 @@ namespace MP.SPEC.Data
}
}
-#if false
- ///
- /// Verifica se sia possiubile cancellare articolo dato suo CodArt cercando su redis o su
- /// tab veto da DB
- ///
- ///
- ///
- public async Task ArticoloDelEnabledAsync(object CodArt)
- {
- using var activity = ActivitySource.StartActivity("ArticoloDelEnabledAsync");
- string codArticolo = $"{CodArt}";
-
- int cacheCheckArtUsato = 1;
- int.TryParse(_configuration.GetValue("ServerConf:cacheCheckArtUsato"), out cacheCheckArtUsato);
- TimeSpan ttl = getRandTOut(cacheCheckArtUsato);
-
- // 1. Controllo cache locale (Smart HashSet)
- // Se siamo nel periodo di validità della cache locale, facciamo il controllo istantaneo
- if (DateTime.Now < _artCacheExpiry)
- {
- // Se la nostra cache corrente contiene l'ID (o se stiamo usando la lista degli unused)
- // Nota: la logica dipende da quale lista è stata caricata.
- // Per semplicità, se abbiamo caricato gli "usati", cerchiamo tra quelli.
- // Se abbiamo caricato gli "unused", l'articolo è eliminabile se è nel set.
- // Ma per evitare confusione, gestiamo il refresh globale.
- }
-
- // 2. Fallback su GetOrFetchAsync per garantire la sincronizzazione e l'uso di FusionCache (L1/L2)
- // Usiamo un approccio che carichi la lista più piccola in memoria.
-
- // Per evitare complessità di switching lato client, usiamo la lista degli "usati" come riferimento
- // principale nella cache distribuita, ma ottimizziamo il caricamento.
-
- bool usato = false;
- string source = "DB";
-
- // Controllo se l'ID è già presente nella nostra cache locale degli "usati"
- if (DateTime.Now < _artCacheExpiry && _usedArtIdsCache.Contains(codArticolo))
- {
- usato = true;
- source = "MEMORY(USED)";
- }
- else if (DateTime.Now < _artCacheExpiry && _unusedArtIdsCache.Contains(codArticolo))
- {
- usato = false;
- source = "MEMORY(UNUSED)";
- }
- else
- {
- // Cache scaduta o non presente: ricalcoliamo la strategia
- int totalCount = await dbController.ArticoliCountAsync();
- int usedCount = await dbController.ArticoliCountUsedAsync();
-
- if (usedCount <= (totalCount - usedCount))
- {
- // Gli usati sono meno o uguali agli unused: carichiamo gli usati
- var usedList = await dbController.ArticoliGetUsedAsync();
- _usedArtIdsCache = new HashSet(usedList.Select(x => x.CodArticolo));
- _unusedArtIdsCache.Clear();
- usato = _usedArtIdsCache.Contains(codArticolo);
- source = "DB+MEMORY(USED)";
- }
- else
- {
- // Gli unused sono meno: carichiamo gli unused
- var unusedList = await dbController.ArticoliGetUnusedAsync();
- _unusedArtIdsCache = new HashSet(unusedList.Select(x => x.CodArticolo));
- _usedArtIdsCache.Clear();
- usato = !_unusedArtIdsCache.Contains(codArticolo);
- source = "DB+MEMORY(UNUSED)";
- }
- _artCacheExpiry = DateTime.Now.AddMinutes(cacheCheckArtUsato);
- }
-
- bool answ = !usato;
-
- activity?.SetTag("data.source", source);
- activity?.Stop();
- LogTrace($"ArticoloDelEnabledAsync | Cod: {codArticolo} | Usato: {usato} | {activity?.Duration.TotalMilliseconds}ms");
- return answ;
- }
-#endif
public string CalcRecipe(RecipeModel currRecipe)
{
@@ -1842,72 +1760,7 @@ namespace MP.SPEC.Data
await dbController.MacchineGetFiltAsync(codGruppo)
?? new List()
);
-
-#if false
- return await GetOrCreateCachedAsync(
- operationName: "MacchineGetFiltAsync",
- memKey: memKey,
- redisKey: redisKey,
- // ✅ TTL coerente con il tuo requisito (prima avevi 1 minuto)
- memoryTtl: TimeSpan.FromMinutes(1),
- dbFactory: async () =>
- await dbController.MacchineGetFiltAsync(codGruppo)
- ?? new List()
- );
-#endif
}
-#if false
- public async Task> MacchineGetFiltAsync(string codGruppo)
- {
- using var activity = ActivitySource.StartActivity("MacchineGetFiltAsync");
- string source = "DB";
-
- string keyGrp = codGruppo != "*" ? codGruppo : "ALL";
- string memKey = $"MACCHINE_MEM:{keyGrp}";
- string redisKey = $"{Utils.redisMacList}:{keyGrp}";
-
- // ✅ 1. MEMORY CACHE
- if (_memoryCache.TryGetValue(memKey, out List cached))
- {
- source = "MEMORY";
- activity?.SetTag("data.source", source);
- activity?.Stop();
- LogTrace($"MacchineGetFiltAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
- return cached;
- }
-
- List result;
-
- // ✅ 2. REDIS
- var rawData = await redisDb.StringGetAsync(redisKey);
-
- if (rawData.HasValue)
- {
- result = JsonConvert.DeserializeObject>(rawData!) ?? new();
- source = "REDIS";
- }
- else
- {
- // ✅ 3. DB
- result = await dbController.MacchineGetFiltAsync(codGruppo);
-
- await redisDb.StringSetAsync(
- redisKey,
- JsonConvert.SerializeObject(result),
- getRandTOut(redisLongTimeCache)
- );
- }
-
- // ✅ salva in RAM (IMPORTANTISSIMO), TTL 1 minuto
- _memoryCache.Set(memKey, result, TimeSpan.FromMinutes(1));
-
- activity?.SetTag("data.source", source);
- activity?.Stop();
-
- LogTrace($"MacchineGetFiltAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
- return result;
- }
-#endif
///
/// Verifica se la idxMaccSel abbia un codice PATH ricette associato
@@ -2245,59 +2098,8 @@ namespace MP.SPEC.Data
return dbResult ?? new List();
}
);
-
-#if false
- return await GetOrCreateCachedAsync(
- operationName: "OdlGetCurrentAsync",
- memKey: memKey,
- redisKey: redisKey,
- // ✅ TTL molto corto (come avevi: 3 secondi)
- memoryTtl: TimeSpan.FromSeconds(3),
- dbFactory: async () =>
- {
- var rawData = await dbController.OdlGetCurrentAsync();
- var dbResult = rawData
- .Select(x => x.IdxMacchina)
- .Distinct()
- .ToList();
-
- return dbResult ?? new List();
- }
- );
-#endif
}
-#if false
- public List OdlGetCurrent()
- {
- using var activity = ActivitySource.StartActivity("OdlGetCurrent");
- List? dbResult = new List();
- string source = "DB";
- string currKey = $"{Utils.redisOdlCurrByMac}";
- // cerco in redis dato valore sel idxMaccSel...
- RedisValue rawData = redisDb.StringGet(currKey);
- if (rawData.HasValue)
- {
- dbResult = JsonConvert.DeserializeObject>($"{rawData}");
- source = "REDIS";
- }
- else
- {
- dbResult = dbController.OdlGetCurrent().Select(x => x.IdxMacchina).Distinct().ToList();
- rawData = JsonConvert.SerializeObject(dbResult);
- redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(3));
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- activity?.SetTag("data.source", source);
- activity?.SetTag("result.count", dbResult.Count);
- activity?.Stop();
- LogTrace($"OdlGetCurrent | Read from {source}: {activity?.Duration.TotalMilliseconds}ms");
- return dbResult;
- }
-#endif
///
/// elenco TUTTI gli ODL
diff --git a/MP.Stats/MP.Stats.csproj b/MP.Stats/MP.Stats.csproj
index 84ec23fb..6b61fa36 100644
--- a/MP.Stats/MP.Stats.csproj
+++ b/MP.Stats/MP.Stats.csproj
@@ -4,7 +4,7 @@
net8.0
MP.Stats
826e877c-ba70-4253-84cb-d0b1cafd4440
- 8.16.2605.0414
+ 8.16.2605.2713
true
en
diff --git a/MP.Stats/Resources/ChangeLog.html b/MP.Stats/Resources/ChangeLog.html
index c29e503f..709dcffb 100644
--- a/MP.Stats/Resources/ChangeLog.html
+++ b/MP.Stats/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
Modulo statistiche MAPO
- Versione: 8.16.2605.0414
+ Versione: 8.16.2605.2713
Note di rilascio:
diff --git a/MP.Stats/Resources/VersNum.txt b/MP.Stats/Resources/VersNum.txt
index 6b8be000..12119c44 100644
--- a/MP.Stats/Resources/VersNum.txt
+++ b/MP.Stats/Resources/VersNum.txt
@@ -1 +1 @@
-8.16.2605.0414
+8.16.2605.2713
diff --git a/MP.Stats/Resources/manifest.xml b/MP.Stats/Resources/manifest.xml
index 58cf6bff..8e8abd19 100644
--- a/MP.Stats/Resources/manifest.xml
+++ b/MP.Stats/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 8.16.2605.0414
+ 8.16.2605.2713
https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip
https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html
false