diff --git a/LiMan.UI/Data/SelectData.cs b/Core/SelectData.cs
similarity index 97%
rename from LiMan.UI/Data/SelectData.cs
rename to Core/SelectData.cs
index 9e44656..39065ec 100644
--- a/LiMan.UI/Data/SelectData.cs
+++ b/Core/SelectData.cs
@@ -1,9 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text;
using System.Threading.Tasks;
-namespace LiMan.UI.Data
+namespace Core
{
public class SelectData
{
@@ -55,4 +56,4 @@ namespace LiMan.UI.Data
#endregion Public Methods
}
-}
\ No newline at end of file
+}
diff --git a/LiMan.Api/Resources/ChangeLog.html b/LiMan.Api/Resources/ChangeLog.html
index 30894b2..dc45955 100644
--- a/LiMan.Api/Resources/ChangeLog.html
+++ b/LiMan.Api/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
- Versione: 2.1.2501.2910
+ Versione: 2.1.2502.0110
Note di rilascio:
-
diff --git a/LiMan.Api/Resources/VersNum.txt b/LiMan.Api/Resources/VersNum.txt
index 83dfcaa..20e4a7c 100644
--- a/LiMan.Api/Resources/VersNum.txt
+++ b/LiMan.Api/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2501.2910
+2.1.2502.0110
diff --git a/LiMan.Api/Resources/manifest.xml b/LiMan.Api/Resources/manifest.xml
index dba703e..b1731de 100644
--- a/LiMan.Api/Resources/manifest.xml
+++ b/LiMan.Api/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2501.2910
+ 2.1.2502.0110
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.UI.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false
diff --git a/LiMan.UI/Data/SelectNext.cs b/LiMan.DB/SelectNext.cs
similarity index 95%
rename from LiMan.UI/Data/SelectNext.cs
rename to LiMan.DB/SelectNext.cs
index 67c24f2..150eaa2 100644
--- a/LiMan.UI/Data/SelectNext.cs
+++ b/LiMan.DB/SelectNext.cs
@@ -1,9 +1,11 @@
-using System;
+using Core;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text;
using System.Threading.Tasks;
-namespace LiMan.UI.Data
+namespace LiMan.DB
{
public class SelectNext : SelectData
{
@@ -52,4 +54,4 @@ namespace LiMan.UI.Data
#endregion Public Methods
}
-}
\ No newline at end of file
+}
diff --git a/LiMan.DB/Services/CommonDataServices.cs b/LiMan.DB/Services/CommonDataServices.cs
index 8e1a95a..f433cc3 100644
--- a/LiMan.DB/Services/CommonDataServices.cs
+++ b/LiMan.DB/Services/CommonDataServices.cs
@@ -1,5 +1,7 @@
using Core;
+using Core.DTO;
using LiMan.DB.DBModels;
+using LiMan.DB.DTO;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
@@ -89,6 +91,161 @@ namespace LiMan.DB.Services
#region Public Methods
+ public async Task ApplicazioniHasChild(string CodApp)
+ {
+ string source = "DB";
+ bool dbResult = false;
+ try
+ {
+ string currKey = $"{Const.rKeyConfig}:Next:Applicazioni:HasChild";
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string rawData = redisHashKeyGet(currKey, CodApp);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ dbResult = JsonConvert.DeserializeObject(rawData);
+ }
+ else
+ {
+ dbResult = dbControllerNext.ApplicazioniHasChild(CodApp);
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ redisHashKeySet(currKey, CodApp, rawData, UltraLongCache.Minutes);
+ }
+ sw.Stop();
+ Log.Debug($"ApplicazioniHasChild | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during ApplicazioniHasChild:{Environment.NewLine}{exc}");
+ }
+ await Task.Delay(0);
+ return dbResult;
+ }
+
+ ///
+ /// Elimina il record indicato (se non ci sono record correlati...)
+ ///
+ ///
+ ///
+ public async Task ApplicazioniNextDelete(ApplicativoModel currItem)
+ {
+ bool done = false;
+ try
+ {
+ // controllo NON ci siano record figli...
+ bool hasCHild = dbControllerNext.ApplicazioniHasChild(currItem.CodApp);
+ if (!hasCHild)
+ {
+ done = dbControllerNext.ApplicazioniNextDelete(currItem);
+ await FlushRedisCache();
+ }
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in ApplicazioniNextDelete:{Environment.NewLine}{exc}");
+ }
+ return done;
+ }
+
+ public async Task
> ApplicazioniNextGetAll()
+ {
+ string source = "DB";
+ List dbResult = new List();
+ try
+ {
+ string currKey = $"{Const.rKeyConfig}:Next:Applicazioni:List";
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string? rawData = await redisDb.StringGetAsync(currKey);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ var tempResult = JsonConvert.DeserializeObject>(rawData);
+ if (tempResult == null)
+ {
+ dbResult = new List();
+ }
+ else
+ {
+ dbResult = tempResult;
+ }
+ }
+ else
+ {
+ dbResult = dbControllerNext.GetApplicazioni();
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
+ }
+ if (dbResult == null)
+ {
+ dbResult = new List();
+ }
+ sw.Stop();
+ Log.Debug($"ApplicazioniNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during ApplicazioniNextGetAll:{Environment.NewLine}{exc}");
+ }
+ return dbResult;
+ }
+
+ public async Task ApplicazioniNextUpdate(ApplicativoModel currItem)
+ {
+ bool done = false;
+ try
+ {
+ done = dbControllerNext.ApplicazioniNextUpdate(currItem);
+ await FlushRedisCache();
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in ApplicazioniNextUpdate:{Environment.NewLine}{exc}");
+ }
+ return done;
+ }
+
+ ///
+ /// Effettua sblocco di una licenza impostando data veto a oggi
+ ///
+ ///
+ ///
+ public async Task AttivazioneDelete(int idxSubLic)
+ {
+ bool fatto = dbControllerNext.AttivazioniDelete(idxSubLic);
+ await Task.Delay(1);
+ return fatto;
+ }
+
+ ///
+ /// Effettua sblocco di una licenza impostando data veto a oggi
+ ///
+ ///
+ ///
+ public async Task AttivazioneUnlock(int idxSubLic)
+ {
+ bool fatto = dbControllerNext.AttivazioniUnlock(idxSubLic);
+ await Task.Delay(1);
+ return fatto;
+ }
+
+ ///
+ /// Recupera attivazioni data licenza
+ ///
+ ///
+ ///
+ public async Task> AttivazioniGetByLic(int IdxLic)
+ {
+ Stopwatch sw = new Stopwatch();
+ List dbResult = new List();
+ sw.Start();
+ dbResult = dbControllerNext.AttivazioniGetByLic(IdxLic);
+ sw.Stop();
+ Log.Trace($"Effettuata lettura da DB per AttivazioniGetByLic: {sw.Elapsed.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
///
/// Recupera elenco Claim dato UserID
///
@@ -573,6 +730,22 @@ namespace LiMan.DB.Services
return dbResult;
}
+ ///
+ /// Elenco file registrati dato ticket id
+ ///
+ /// Identificativo del ticket
+ ///
+ public async Task> FileGetFilt(int idxTicket)
+ {
+ List dbResult = new List();
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ dbResult = dbControllerNext.FileGetFilt(idxTicket);
+ sw.Stop();
+ Log.Trace($"Effettuata lettura da DB per FileGetFilt: {sw.Elapsed.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
///
/// Esegue flush cache dati enroll x successiva rilettura
///
@@ -618,6 +791,141 @@ namespace LiMan.DB.Services
return answ;
}
+ public async Task> InstallazioniNextGetAll()
+ {
+ string source = "DB";
+ List dbResult = new List();
+ try
+ {
+ string currKey = $"{Const.rKeyConfig}:Next:Installazioni:List";
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string rawData = await redisDb.StringGetAsync(currKey);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ var tempResult = JsonConvert.DeserializeObject>(rawData);
+ if (tempResult == null)
+ {
+ dbResult = new List();
+ }
+ else
+ {
+ dbResult = tempResult;
+ }
+ }
+ else
+ {
+ dbResult = dbControllerNext.GetInstallazioni();
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
+ }
+ if (dbResult == null)
+ {
+ dbResult = new List();
+ }
+ sw.Stop();
+ Log.Debug($"InstallazioniNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during InstallazioniNextGetAll:{Environment.NewLine}{exc}");
+ }
+ return dbResult;
+
+#if false
+ List dbResult = new List();
+ string cacheKey = mHash("Next:Installazioni");
+ string rawData;
+ var redisDataList = await distributedCache.GetAsync(cacheKey);
+ if (redisDataList != null)
+ {
+ rawData = Encoding.UTF8.GetString(redisDataList);
+ dbResult = JsonConvert.DeserializeObject>(rawData);
+ }
+ else
+ {
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ dbResult = dbControllerNext.GetInstallazioni();
+ rawData = JsonConvert.SerializeObject(dbResult);
+ redisDataList = Encoding.UTF8.GetBytes(rawData);
+ await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Trace($"Effettuata lettura da DB + caching per InstallazioniNextGetAll: {ts.TotalMilliseconds} ms");
+ }
+ return await Task.FromResult(dbResult);
+#endif
+ }
+
+ public async Task InstallazioniNextUpdate(InstallazioneModel currItem)
+ {
+ bool done = false;
+ try
+ {
+ done = dbControllerNext.UpsertInstallazione(currItem);
+ await FlushRedisCache();
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in InstallazioniNextUpdate:{Environment.NewLine}{exc}");
+ }
+ return await Task.FromResult(done);
+ }
+
+ ///
+ /// Recupera info statistiche installazione dato periodo riferimento, da cache o da db
+ ///
+ ///
+ ///
+ /// Filtro Cliente (CodInstall)
+ /// Filtro TipoApp
+ public async Task InstallStatusGetInfo(DateTime dtStart, DateTime dtEnd, string CodInst, string TipoApp)
+ {
+ string source = "DB";
+ InstallStatusDTO dbResult = new InstallStatusDTO();
+ try
+ {
+ string filtCli = string.IsNullOrEmpty(CodInst) ? "ALL-INSTALL" : $"{CodInst}";
+ string filtTipo = string.IsNullOrEmpty(TipoApp) ? "ALL-TIPO" : $"{TipoApp}";
+ string currKey = $"{Const.rKeyConfig}:InstVerSta:{filtTipo}:{filtCli}:{dtStart:yyyyMMdd-HHmmss}:{dtEnd:yyyyMMdd-HHmmss}";
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string? rawData = await redisDb.StringGetAsync(currKey);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ var tempResult = JsonConvert.DeserializeObject(rawData);
+ if (tempResult == null)
+ {
+ dbResult = new InstallStatusDTO();
+ }
+ else
+ {
+ dbResult = tempResult;
+ }
+ }
+ else
+ {
+ dbResult = dbControllerNext.InstallStatusGetInfo(dtStart, dtEnd, CodInst, TipoApp);
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
+ }
+ if (dbResult == null)
+ {
+ dbResult = new InstallStatusDTO();
+ }
+ sw.Stop();
+ Log.Debug($"InstallStatusGetInfo | {source} in: {sw.Elapsed.TotalMilliseconds} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during InstallStatusGetInfo:{Environment.NewLine}{exc}");
+ }
+ return dbResult;
+ }
+
///
/// Recupera licenza dato IDX
///
@@ -635,6 +943,107 @@ namespace LiMan.DB.Services
return dbResult;
}
+ public async Task> LicenzeNextGetAll()
+ {
+ string source = "DB";
+ List dbResult = new List();
+ try
+ {
+ string currKey = $"{Const.rKeyConfig}:Next:Licenze:List";
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string? rawData = await redisDb.StringGetAsync(currKey);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ var tempResult = JsonConvert.DeserializeObject>(rawData);
+ if (tempResult == null)
+ {
+ dbResult = new List();
+ }
+ else
+ {
+ dbResult = tempResult;
+ }
+ }
+ else
+ {
+ dbResult = dbControllerNext.GetLicenze();
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
+ }
+ if (dbResult == null)
+ {
+ dbResult = new List();
+ }
+ sw.Stop();
+ Log.Debug($"LicenzeNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during LicenzeNextGetAll:{Environment.NewLine}{exc}");
+ }
+ return dbResult;
+
+#if false
+ List dbResult = new List();
+ string cacheKey = mHash("Next:Licenze");
+ string rawData;
+ var redisDataList = await distributedCache.GetAsync(cacheKey);
+ if (redisDataList != null)
+ {
+ rawData = Encoding.UTF8.GetString(redisDataList);
+ dbResult = JsonConvert.DeserializeObject>(rawData);
+ }
+ else
+ {
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ dbResult = dbControllerNext.GetLicenze();
+ rawData = JsonConvert.SerializeObject(dbResult);
+ redisDataList = Encoding.UTF8.GetBytes(rawData);
+ await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Trace($"Effettuata lettura da DB + caching per LicenzeNextGetAll: {ts.TotalMilliseconds} ms");
+ }
+ return await Task.FromResult(dbResult);
+#endif
+ }
+
+ ///
+ /// Recupera licenze SENZA cache
+ ///
+ ///
+ ///
+ public async Task> LicenzeNextGetFilt(SelectNext CurrFilter)
+ {
+ Stopwatch sw = new Stopwatch();
+ List dbResult = new List();
+ sw.Start();
+ dbResult = dbControllerNext.GetLicenzeFilt(CurrFilter.OnlyActive, CurrFilter.ApplicazioneSel, CurrFilter.InstallazioneSel);
+ sw.Stop();
+ Log.Trace($"Effettuata lettura da DB per LicenzeNextGetFilt: {sw.Elapsed.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
+ public async Task LicenzeNextUpdate(LicenzaModel currItem)
+ {
+ bool done = false;
+
+ // chiamo Log licenza + update insieme
+ try
+ {
+ done = dbControllerNext.UpsertLicenza(currItem);
+ await FlushRedisCache();
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in ApplicazioniUpdate:{Environment.NewLine}{exc}");
+ }
+ return await Task.FromResult(done);
+ }
+
public async Task ReleaseDelete(ReleaseModel rec2del)
{
bool fatto = dbControllerNext.ReleaseDelete(rec2del);
@@ -748,6 +1157,131 @@ namespace LiMan.DB.Services
return answ;
}
+ ///
+ /// Upsert record Release applicazione
+ ///
+ ///
+ ///
+ public async Task ReleaseUpsert(ReleaseModel currItem)
+ {
+ bool done = false;
+ try
+ {
+ done = await dbControllerNext.ReleaseUpsert(currItem);
+ await FlushRedisCache();
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in ReleaseUpsert:{Environment.NewLine}{exc}");
+ }
+ return done;
+ }
+
+ public async Task SendEmail(string destEmail, string oggetto, string corpo)
+ {
+ bool answ = false;
+ try
+ {
+ await _emailSender.SendEmailAsync(destEmail, oggetto, corpo);
+ answ = true;
+ }
+ catch
+ { }
+
+ return answ;
+ }
+
+ ///
+ /// Statistiche del LOG chiamate all'API dato filtro
+ ///
+ /// Data minima
+ /// DataMax
+ /// Valore cercato, se "" è tutti
+ ///
+ public async Task> StatsLogCallGetFilt(DateTime DateFrom, DateTime DateTo, string SearchVal = "")
+ {
+ string source = "DB";
+ List dbResult = new List();
+ try
+ {
+ string currKey = $"{Const.rKeyConfig}:StatslogCall:{DateFrom:yyyyMMdd}:{DateTo:yyyyMMdd}";
+ if (!string.IsNullOrEmpty(SearchVal))
+ {
+ currKey += $":{SearchVal}";
+ }
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ string? rawData = await redisDb.StringGetAsync(currKey);
+ if (!string.IsNullOrEmpty(rawData))
+ {
+ source = "REDIS";
+ var tempResult = JsonConvert.DeserializeObject>(rawData);
+ if (tempResult == null)
+ {
+ dbResult = new List();
+ }
+ else
+ {
+ dbResult = tempResult;
+ }
+ }
+ else
+ {
+ var rawResult = dbControllerNext.StatsLogCallGetFilt(DateFrom, DateTo, SearchVal);
+ dbResult = rawResult
+ .OrderByDescending(x => x.YearRef)
+ .ThenByDescending(x => x.TotCall)
+ .ToList();
+ rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
+ await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
+ }
+ if (dbResult == null)
+ {
+ dbResult = new List();
+ }
+ sw.Stop();
+ Log.Debug($"StatsLogCallGetFilt | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Error during StatsLogCallGetFilt:{Environment.NewLine}{exc}");
+ }
+ return dbResult;
+
+#if false
+ List dbResult = new List();
+ string cacheKey = mHash($"StatslogCall:{DateFrom:yyyyMMdd}:{DateTo:yyyyMMdd}");
+ if (!string.IsNullOrEmpty(SearchVal))
+ {
+ cacheKey += $":{SearchVal}";
+ }
+ string rawData;
+ var redisDataList = await distributedCache.GetAsync(cacheKey);
+ if (redisDataList != null)
+ {
+ rawData = Encoding.UTF8.GetString(redisDataList);
+ dbResult = JsonConvert.DeserializeObject>(rawData);
+ }
+ else
+ {
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ var rawResult = dbControllerNext.StatsLogCallGetFilt(DateFrom, DateTo, SearchVal);
+ dbResult = rawResult
+ .OrderByDescending(x => x.YearRef)
+ .ThenByDescending(x => x.TotCall)
+ .ToList();
+ rawData = JsonConvert.SerializeObject(dbResult);
+ redisDataList = Encoding.UTF8.GetBytes(rawData);
+ await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
+ stopWatch.Stop();
+ TimeSpan ts = stopWatch.Elapsed;
+ Log.Trace($"Effettuata lettura da DB + caching per StatsLogCallGetFilt: {ts.TotalMilliseconds} ms");
+ }
+ return await Task.FromResult(dbResult);
+#endif
+ }
+
///
/// Restituisce i task associati ad un dato EgwACC in stato DONE
///
@@ -865,6 +1399,80 @@ namespace LiMan.DB.Services
return answ;
}
+ ///
+ /// Recupera elenco Tickets filtrato
+ ///
+ ///
+ ///
+ public async Task> TicketsGetAll()
+ {
+ Stopwatch sw = new Stopwatch();
+ List dbResult = new List();
+ sw.Start();
+ dbResult = dbControllerNext.TicketGetAll(false, 1000);
+ sw.Stop();
+ TimeSpan ts = sw.Elapsed;
+ Log.Trace($"Effettuata lettura da DB per TicketsGetAll: {ts.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
+ ///
+ /// Ricerca ticket filtrati
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> TicketsGetFilt(bool onlyOpen, string CodApp, string CodInst)
+ {
+ Stopwatch sw = new Stopwatch();
+ List dbResult = new List();
+ sw.Start();
+ dbResult = dbControllerNext.TicketGetFilt(onlyOpen, CodApp, CodInst);
+ sw.Stop();
+ TimeSpan ts = sw.Elapsed;
+ Log.Trace($"Effettuata lettura da DB per TicketsGetFilt: {ts.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
+ ///
+ /// Recupera elenco Tickets filtrato
+ ///
+ ///
+ ///
+ public async Task> TicketsGetFilt(SelectNext CurrFilter)
+ {
+ Stopwatch sw = new Stopwatch();
+ List dbResult = new List();
+ sw.Start();
+ dbResult = dbControllerNext.TicketGetFiltAllLic(CurrFilter.OnlyActive, Core.Enum.TipologiaTicket.ND, CurrFilter.ApplicazioneSel, CurrFilter.InstallazioneSel, 1000);
+ sw.Stop();
+ TimeSpan ts = sw.Elapsed;
+ Log.Trace($"Effettuata lettura da DB per TicketsGetFilt: {ts.TotalMilliseconds} ms");
+ return await Task.FromResult(dbResult);
+ }
+
+ ///
+ /// Aggiornamentos tato ticket
+ ///
+ ///
+ ///
+ ///
+ public async Task TicketUpdateState(int IdxTicket, StatoRichiesta NewStatus)
+ {
+ bool fatto = false;
+ // inserimento!
+ Stopwatch sw = new Stopwatch();
+ sw.Start();
+ fatto = dbControllerNext.TicketUpdateState(IdxTicket, NewStatus);
+ sw.Stop();
+ TimeSpan ts = sw.Elapsed;
+ Log.Trace($"Effettuata update con TicketUpdateState: {ts.TotalMilliseconds} ms");
+
+ // restituisce elenco
+ return await Task.FromResult(fatto);
+ }
+
///
/// Verifica di un role utente dall'elenco claims...
///
diff --git a/LiMan.UI/Data/SelectGLS.cs b/LiMan.GLS/SelectGLS.cs
similarity index 95%
rename from LiMan.UI/Data/SelectGLS.cs
rename to LiMan.GLS/SelectGLS.cs
index 3ddaf00..cb608bd 100644
--- a/LiMan.UI/Data/SelectGLS.cs
+++ b/LiMan.GLS/SelectGLS.cs
@@ -1,9 +1,11 @@
-using System;
+using Core;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Text;
using System.Threading.Tasks;
-namespace LiMan.UI.Data
+namespace LiMan.GLS
{
public class SelectGLS : SelectData
{
@@ -55,4 +57,4 @@ namespace LiMan.UI.Data
#endregion Public Methods
}
-}
\ No newline at end of file
+}
diff --git a/LiMan.Transfer/Resources/ChangeLog.html b/LiMan.Transfer/Resources/ChangeLog.html
index 6501505..2a6ffa7 100644
--- a/LiMan.Transfer/Resources/ChangeLog.html
+++ b/LiMan.Transfer/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
- Versione: 2.1.2501.2910
+ Versione: 2.1.2502.0110
Note di rilascio:
diff --git a/LiMan.Transfer/Resources/VersNum.txt b/LiMan.Transfer/Resources/VersNum.txt
index 83dfcaa..20e4a7c 100644
--- a/LiMan.Transfer/Resources/VersNum.txt
+++ b/LiMan.Transfer/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2501.2910
+2.1.2502.0110
diff --git a/LiMan.Transfer/Resources/manifest.xml b/LiMan.Transfer/Resources/manifest.xml
index 2d49877..0b49a46 100644
--- a/LiMan.Transfer/Resources/manifest.xml
+++ b/LiMan.Transfer/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2501.2910
+ 2.1.2502.0110
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.Transfer.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false
diff --git a/LiMan.UI/Data/LiManDataService.cs b/LiMan.UI/Data/LiManDataService.cs
index 5a97d60..80ebfdd 100644
--- a/LiMan.UI/Data/LiManDataService.cs
+++ b/LiMan.UI/Data/LiManDataService.cs
@@ -7,6 +7,7 @@ using LiMan.DB.Controllers;
using LiMan.DB.DBModels;
using LiMan.DB.DTO;
using LiMan.DB.Services;
+using LiMan.GLS;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Distributed;
@@ -116,149 +117,6 @@ namespace LiMan.UI.Data
return await Task.FromResult(done);
}
- public async Task ApplicazioniHasChild(string CodApp)
- {
- string source = "DB";
- bool dbResult = false;
- try
- {
- string currKey = $"{Const.rKeyConfig}:Next:Applicazioni:HasChild";
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string rawData = redisHashKeyGet(currKey, CodApp);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- dbResult = JsonConvert.DeserializeObject(rawData);
- }
- else
- {
- dbResult = dbControllerNext.ApplicazioniHasChild(CodApp);
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- redisHashKeySet(currKey, CodApp, rawData, UltraLongCache.Minutes);
- }
- sw.Stop();
- Log.Debug($"ApplicazioniHasChild | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during ApplicazioniHasChild:{Environment.NewLine}{exc}");
- }
- await Task.Delay(0);
- return dbResult;
- }
-
- ///
- /// Elimina il record indicato (se non ci sono record correlati...)
- ///
- ///
- ///
- public async Task ApplicazioniNextDelete(ApplicativoModel currItem)
- {
- bool done = false;
- try
- {
- // controllo NON ci siano record figli...
- bool hasCHild = dbControllerNext.ApplicazioniHasChild(currItem.CodApp);
- if (!hasCHild)
- {
- done = dbControllerNext.ApplicazioniNextDelete(currItem);
- await FlushRedisCache();
- }
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in ApplicazioniNextDelete:{Environment.NewLine}{exc}");
- }
- return done;
- }
-
- public async Task
> ApplicazioniNextGetAll()
- {
- string source = "DB";
- List dbResult = new List();
- try
- {
- string currKey = $"{Const.rKeyConfig}:Next:Applicazioni:List";
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string? rawData = await redisDb.StringGetAsync(currKey);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- var tempResult = JsonConvert.DeserializeObject>(rawData);
- if (tempResult == null)
- {
- dbResult = new List();
- }
- else
- {
- dbResult = tempResult;
- }
- }
- else
- {
- dbResult = dbControllerNext.GetApplicazioni();
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- sw.Stop();
- Log.Debug($"ApplicazioniNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during ApplicazioniNextGetAll:{Environment.NewLine}{exc}");
- }
- return dbResult;
- }
-
- public async Task ApplicazioniNextUpdate(ApplicativoModel currItem)
- {
- bool done = false;
- try
- {
- done = dbControllerNext.ApplicazioniNextUpdate(currItem);
- await FlushRedisCache();
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in ApplicazioniNextUpdate:{Environment.NewLine}{exc}");
- }
- return done;
- }
-
- ///
- /// Effettua sblocco di una licenza impostando data veto a oggi
- ///
- ///
- ///
- public async Task AttivazioneUnlock(int idxSubLic)
- {
- bool fatto = dbControllerNext.AttivazioniUnlock(idxSubLic);
- await Task.Delay(1);
- return fatto;
- }
-
- ///
- /// Recupera attivazioni data licenza
- ///
- ///
- ///
- public async Task> AttivazioniGetByLic(int IdxLic)
- {
- Stopwatch sw = new Stopwatch();
- List dbResult = new List();
- sw.Start();
- dbResult = dbControllerNext.AttivazioniGetByLic(IdxLic);
- sw.Stop();
- Log.Trace($"Effettuata lettura da DB per AttivazioniGetByLic: {sw.Elapsed.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
public async Task DbForceMigrate()
{
return await Task.FromResult(dbControllerGLS.DbForceMigrate());
@@ -271,22 +129,6 @@ namespace LiMan.UI.Data
dbControllerGLS.Dispose();
}
- ///
- /// Elenco file registrati dato ticket id
- ///
- /// Identificativo del ticket
- ///
- public async Task> FileGetFilt(int idxTicket)
- {
- List dbResult = new List();
- Stopwatch sw = new Stopwatch();
- sw.Start();
- dbResult = dbControllerNext.FileGetFilt(idxTicket);
- sw.Stop();
- Log.Trace($"Effettuata lettura da DB per FileGetFilt: {sw.Elapsed.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
public async Task> InstallazioniGLSGetAll()
{
string source = "DB";
@@ -370,141 +212,6 @@ namespace LiMan.UI.Data
return await Task.FromResult(done);
}
- public async Task> InstallazioniNextGetAll()
- {
- string source = "DB";
- List dbResult = new List();
- try
- {
- string currKey = $"{Const.rKeyConfig}:Next:Installazioni:List";
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string rawData = await redisDb.StringGetAsync(currKey);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- var tempResult = JsonConvert.DeserializeObject>(rawData);
- if (tempResult == null)
- {
- dbResult = new List();
- }
- else
- {
- dbResult = tempResult;
- }
- }
- else
- {
- dbResult = dbControllerNext.GetInstallazioni();
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- sw.Stop();
- Log.Debug($"InstallazioniNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during InstallazioniNextGetAll:{Environment.NewLine}{exc}");
- }
- return dbResult;
-
-#if false
- List dbResult = new List();
- string cacheKey = mHash("Next:Installazioni");
- string rawData;
- var redisDataList = await distributedCache.GetAsync(cacheKey);
- if (redisDataList != null)
- {
- rawData = Encoding.UTF8.GetString(redisDataList);
- dbResult = JsonConvert.DeserializeObject>(rawData);
- }
- else
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- dbResult = dbControllerNext.GetInstallazioni();
- rawData = JsonConvert.SerializeObject(dbResult);
- redisDataList = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per InstallazioniNextGetAll: {ts.TotalMilliseconds} ms");
- }
- return await Task.FromResult(dbResult);
-#endif
- }
-
- public async Task InstallazioniNextUpdate(InstallazioneModel currItem)
- {
- bool done = false;
- try
- {
- done = dbControllerNext.UpsertInstallazione(currItem);
- await FlushRedisCache();
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in InstallazioniNextUpdate:{Environment.NewLine}{exc}");
- }
- return await Task.FromResult(done);
- }
-
- ///
- /// Recupera info statistiche installazione dato periodo riferimento, da cache o da db
- ///
- ///
- ///
- /// Filtro Cliente (CodInstall)
- /// Filtro TipoApp
- public async Task InstallStatusGetInfo(DateTime dtStart, DateTime dtEnd, string CodInst, string TipoApp)
- {
- string source = "DB";
- InstallStatusDTO dbResult = new InstallStatusDTO();
- try
- {
- string filtCli = string.IsNullOrEmpty(CodInst) ? "ALL-INSTALL" : $"{CodInst}";
- string filtTipo = string.IsNullOrEmpty(TipoApp) ? "ALL-TIPO" : $"{TipoApp}";
- string currKey = $"{Const.rKeyConfig}:InstVerSta:{filtTipo}:{filtCli}:{dtStart:yyyyMMdd-HHmmss}:{dtEnd:yyyyMMdd-HHmmss}";
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string? rawData = await redisDb.StringGetAsync(currKey);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- var tempResult = JsonConvert.DeserializeObject(rawData);
- if (tempResult == null)
- {
- dbResult = new InstallStatusDTO();
- }
- else
- {
- dbResult = tempResult;
- }
- }
- else
- {
- dbResult = dbControllerNext.InstallStatusGetInfo(dtStart, dtEnd, CodInst, TipoApp);
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
- }
- if (dbResult == null)
- {
- dbResult = new InstallStatusDTO();
- }
- sw.Stop();
- Log.Debug($"InstallStatusGetInfo | {source} in: {sw.Elapsed.TotalMilliseconds} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during InstallStatusGetInfo:{Environment.NewLine}{exc}");
- }
- return dbResult;
- }
-
///
/// Trasferisce una licenza da GLS a Next come LOG di una licenza scaduta
///
@@ -692,343 +399,17 @@ namespace LiMan.UI.Data
return await Task.FromResult(done);
}
- public async Task> LicenzeNextGetAll()
- {
- string source = "DB";
- List dbResult = new List();
- try
- {
- string currKey = $"{Const.rKeyConfig}:Next:Licenze:List";
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string? rawData = await redisDb.StringGetAsync(currKey);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- var tempResult = JsonConvert.DeserializeObject>(rawData);
- if (tempResult == null)
- {
- dbResult = new List();
- }
- else
- {
- dbResult = tempResult;
- }
- }
- else
- {
- dbResult = dbControllerNext.GetLicenze();
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- sw.Stop();
- Log.Debug($"LicenzeNextGetAll | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during LicenzeNextGetAll:{Environment.NewLine}{exc}");
- }
- return dbResult;
-
-#if false
- List dbResult = new List();
- string cacheKey = mHash("Next:Licenze");
- string rawData;
- var redisDataList = await distributedCache.GetAsync(cacheKey);
- if (redisDataList != null)
- {
- rawData = Encoding.UTF8.GetString(redisDataList);
- dbResult = JsonConvert.DeserializeObject>(rawData);
- }
- else
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- dbResult = dbControllerNext.GetLicenze();
- rawData = JsonConvert.SerializeObject(dbResult);
- redisDataList = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per LicenzeNextGetAll: {ts.TotalMilliseconds} ms");
- }
- return await Task.FromResult(dbResult);
-#endif
- }
-
- ///
- /// Recupera licenze SENZA cache
- ///
- ///
- ///
- public async Task> LicenzeNextGetFilt(SelectNext CurrFilter)
- {
- Stopwatch sw = new Stopwatch();
- List dbResult = new List();
- sw.Start();
- dbResult = dbControllerNext.GetLicenzeFilt(CurrFilter.OnlyActive, CurrFilter.ApplicazioneSel, CurrFilter.InstallazioneSel);
- sw.Stop();
- Log.Trace($"Effettuata lettura da DB per LicenzeNextGetFilt: {sw.Elapsed.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
- public async Task LicenzeNextUpdate(LicenzaModel currItem)
- {
- bool done = false;
-
- // chiamo Log licenza + update insieme
- try
- {
- done = dbControllerNext.UpsertLicenza(currItem);
- await FlushRedisCache();
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in ApplicazioniUpdate:{Environment.NewLine}{exc}");
- }
- return await Task.FromResult(done);
- }
-
- ///
- /// Upsert record Release applicazione
- ///
- ///
- ///
- public async Task ReleaseUpsert(ReleaseModel currItem)
- {
- bool done = false;
- try
- {
- done = await dbControllerNext.ReleaseUpsert(currItem);
- await FlushRedisCache();
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in ReleaseUpsert:{Environment.NewLine}{exc}");
- }
- return done;
- }
-
public void rollBackEditGLS(object item)
{
dbControllerGLS.rollBackEntity(item);
}
- public async Task SendEmail(string destEmail, string oggetto, string corpo)
- {
- bool answ = false;
- try
- {
- await _emailSender.SendEmailAsync(destEmail, oggetto, corpo);
- answ = true;
- }
- catch
- { }
-
- return answ;
- }
-
- ///
- /// Statistiche del LOG chiamate all'API dato filtro
- ///
- /// Data minima
- /// DataMax
- /// Valore cercato, se "" è tutti
- ///
- public async Task> StatsLogCallGetFilt(DateTime DateFrom, DateTime DateTo, string SearchVal = "")
- {
- string source = "DB";
- List dbResult = new List();
- try
- {
- string currKey = $"{Const.rKeyConfig}:StatslogCall:{DateFrom:yyyyMMdd}:{DateTo:yyyyMMdd}";
- if (!string.IsNullOrEmpty(SearchVal))
- {
- currKey += $":{SearchVal}";
- }
- Stopwatch sw = new Stopwatch();
- sw.Start();
- string? rawData = await redisDb.StringGetAsync(currKey);
- if (!string.IsNullOrEmpty(rawData))
- {
- source = "REDIS";
- var tempResult = JsonConvert.DeserializeObject>(rawData);
- if (tempResult == null)
- {
- dbResult = new List();
- }
- else
- {
- dbResult = tempResult;
- }
- }
- else
- {
- var rawResult = dbControllerNext.StatsLogCallGetFilt(DateFrom, DateTo, SearchVal);
- dbResult = rawResult
- .OrderByDescending(x => x.YearRef)
- .ThenByDescending(x => x.TotCall)
- .ToList();
- rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
- await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
- }
- if (dbResult == null)
- {
- dbResult = new List();
- }
- sw.Stop();
- Log.Debug($"StatsLogCallGetFilt | {source} in: {sw.Elapsed.TotalMilliseconds:N2} ms");
- }
- catch (Exception exc)
- {
- Log.Error($"Error during StatsLogCallGetFilt:{Environment.NewLine}{exc}");
- }
- return dbResult;
-
-#if false
- List dbResult = new List();
- string cacheKey = mHash($"StatslogCall:{DateFrom:yyyyMMdd}:{DateTo:yyyyMMdd}");
- if (!string.IsNullOrEmpty(SearchVal))
- {
- cacheKey += $":{SearchVal}";
- }
- string rawData;
- var redisDataList = await distributedCache.GetAsync(cacheKey);
- if (redisDataList != null)
- {
- rawData = Encoding.UTF8.GetString(redisDataList);
- dbResult = JsonConvert.DeserializeObject>(rawData);
- }
- else
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- var rawResult = dbControllerNext.StatsLogCallGetFilt(DateFrom, DateTo, SearchVal);
- dbResult = rawResult
- .OrderByDescending(x => x.YearRef)
- .ThenByDescending(x => x.TotCall)
- .ToList();
- rawData = JsonConvert.SerializeObject(dbResult);
- redisDataList = Encoding.UTF8.GetBytes(rawData);
- await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt(true));
- stopWatch.Stop();
- TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB + caching per StatsLogCallGetFilt: {ts.TotalMilliseconds} ms");
- }
- return await Task.FromResult(dbResult);
-#endif
- }
-
- ///
- /// Recupera elenco Tickets filtrato
- ///
- ///
- ///
- public async Task> TicketsGetAll()
- {
- Stopwatch sw = new Stopwatch();
- List dbResult = new List();
- sw.Start();
- dbResult = dbControllerNext.TicketGetAll(false, 1000);
- sw.Stop();
- TimeSpan ts = sw.Elapsed;
- Log.Trace($"Effettuata lettura da DB per TicketsGetAll: {ts.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
- ///
- /// Recupera elenco Tickets filtrato
- ///
- ///
- ///
- public async Task> TicketsGetFilt(SelectNext CurrFilter)
- {
- Stopwatch sw = new Stopwatch();
- List dbResult = new List();
- sw.Start();
- dbResult = dbControllerNext.TicketGetFiltAllLic(CurrFilter.OnlyActive, Core.Enum.TipologiaTicket.ND, CurrFilter.ApplicazioneSel, CurrFilter.InstallazioneSel, 1000);
- sw.Stop();
- TimeSpan ts = sw.Elapsed;
- Log.Trace($"Effettuata lettura da DB per TicketsGetFilt: {ts.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
- ///
- /// Ricerca ticket filtrati
- ///
- ///
- ///
- ///
- ///
- public async Task> TicketsGetFilt(bool onlyOpen, string CodApp, string CodInst)
- {
- Stopwatch sw = new Stopwatch();
- List dbResult = new List();
- sw.Start();
- dbResult = dbControllerNext.TicketGetFilt(onlyOpen, CodApp, CodInst);
- sw.Stop();
- TimeSpan ts = sw.Elapsed;
- Log.Trace($"Effettuata lettura da DB per TicketsGetFilt: {ts.TotalMilliseconds} ms");
- return await Task.FromResult(dbResult);
- }
-
- ///
- /// Aggiornamentos tato ticket
- ///
- ///
- ///
- ///
- public async Task TicketUpdateState(int IdxTicket, StatoRichiesta NewStatus)
- {
- bool fatto = false;
- // inserimento!
- Stopwatch sw = new Stopwatch();
- sw.Start();
- fatto = dbControllerNext.TicketUpdateState(IdxTicket, NewStatus);
- sw.Stop();
- TimeSpan ts = sw.Elapsed;
- Log.Trace($"Effettuata update con TicketUpdateState: {ts.TotalMilliseconds} ms");
-
- // restituisce elenco
- return await Task.FromResult(fatto);
- }
-
#endregion Public Methods
- #region Internal Methods
-
- ///
- /// Effettua sblocco di una licenza impostando data veto a oggi
- ///
- ///
- ///
- internal async Task AttivazioneDelete(int idxSubLic)
- {
- bool fatto = dbControllerNext.AttivazioniDelete(idxSubLic);
- await Task.Delay(1);
- return fatto;
- }
-
- #endregion Internal Methods
-
#region Protected Fields
protected new static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Protected Fields
-
- #region Protected Methods
-
- protected string getCacheKey(string TableName, SelectData CurrFilter)
- {
- string answ = $"{TableName}:D_{CurrFilter.DateStart:yyyyMMddHHmm}_{CurrFilter.DateEnd:yyyyMMddHHmm}";
- return answ;
- }
-
- #endregion Protected Methods
}
}
\ No newline at end of file
diff --git a/LiMan.UI/Data/MessageService.cs b/LiMan.UI/Data/MessageService.cs
index ac7ffd9..b900093 100644
--- a/LiMan.UI/Data/MessageService.cs
+++ b/LiMan.UI/Data/MessageService.cs
@@ -1,5 +1,7 @@
using Blazored.LocalStorage;
using Core;
+using LiMan.DB;
+using LiMan.GLS;
using Newtonsoft.Json;
using NLog;
using StackExchange.Redis;
diff --git a/LiMan.UI/LiMan.UI.csproj b/LiMan.UI/LiMan.UI.csproj
index 9ca9651..bb1c72b 100644
--- a/LiMan.UI/LiMan.UI.csproj
+++ b/LiMan.UI/LiMan.UI.csproj
@@ -2,11 +2,17 @@
net6.0
- 2.1.2501.2910
+ 2.1.2502.0110
LiMan.UI
LiMan.UI
+
+
+
+
+
+
diff --git a/LiMan.UI/Resources/ChangeLog.html b/LiMan.UI/Resources/ChangeLog.html
index 30894b2..dc45955 100644
--- a/LiMan.UI/Resources/ChangeLog.html
+++ b/LiMan.UI/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
License Manager
- Versione: 2.1.2501.2910
+ Versione: 2.1.2502.0110
Note di rilascio:
-
diff --git a/LiMan.UI/Resources/VersNum.txt b/LiMan.UI/Resources/VersNum.txt
index 83dfcaa..20e4a7c 100644
--- a/LiMan.UI/Resources/VersNum.txt
+++ b/LiMan.UI/Resources/VersNum.txt
@@ -1 +1 @@
-2.1.2501.2910
+2.1.2502.0110
diff --git a/LiMan.UI/Resources/manifest.xml b/LiMan.UI/Resources/manifest.xml
index dba703e..b1731de 100644
--- a/LiMan.UI/Resources/manifest.xml
+++ b/LiMan.UI/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 2.1.2501.2910
+ 2.1.2502.0110
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.UI.zip
https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html
false