diff --git a/MP.Data/Controllers/MpInveController.cs b/MP.Data/Controllers/MpInveController.cs index 99001c0e..b1823833 100644 --- a/MP.Data/Controllers/MpInveController.cs +++ b/MP.Data/Controllers/MpInveController.cs @@ -28,17 +28,31 @@ namespace MP.Data.Controllers /// Elenco Inventari CORRENTI (=aperti, senza data fine) /// /// - public List InventSessCurrList() + public List InventSessCurrList(DateTime dtStart, DateTime? dtEnd) { List dbResult = new List(); using (var dbCtx = new MoonPro_InveContext(_configuration)) { + if(dtEnd == null) + { + + dbResult = dbCtx .DbInveSess .Where(x => x.DtEnd == null) .AsNoTracking() .OrderByDescending(x => x.DtStart) .ToList(); + } + else + { + dbResult = dbCtx + .DbInveSess + .Where(x => (x.DtEnd == dtEnd) && (x.DtStart == dtStart)) + .AsNoTracking() + .OrderByDescending(x => x.DtStart) + .ToList(); + } } return dbResult; } diff --git a/MP.INVE/Data/MiDataService.cs b/MP.INVE/Data/MiDataService.cs index d1da13ea..9d722505 100644 --- a/MP.INVE/Data/MiDataService.cs +++ b/MP.INVE/Data/MiDataService.cs @@ -1,8 +1,10 @@ using Egw.Core; using MP.Data.Conf; using MP.Data.DatabaseModels; +using Newtonsoft.Json; using NLog; using StackExchange.Redis; +using System.Diagnostics; namespace MP.INVE.Data { @@ -66,8 +68,43 @@ namespace MP.INVE.Data public List ElencoOperatori(int matrOpr, string authkey) { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); List? result = new List(); - result = dbController.ElencoOperatori(matrOpr, authkey); + // cerco in redis... + RedisValue rawData = redisDb.StringGet(redisElencoOperatori); + if (!string.IsNullOrEmpty($"{rawData}")) + { + var dese = JsonConvert.DeserializeObject>($"{rawData}"); + if (dese != null) + { + if ((matrOpr != 0) && (authkey != "")) + { + result = dese.Where(x => (x.MatrOpr == matrOpr) && (x.authKey == authkey)).ToList(); + } + else + { + result = dese; + } + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ElencoOperatori Read from REDIS: {ts.TotalMilliseconds}ms"); + } + else + { + result = dbController.ElencoOperatori(matrOpr, authkey); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + redisDb.StringSetAsync(redisElencoOperatori, rawData, getRandTOut(redisLongTimeCache)); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ElencoOperatori Read from DB: {ts.TotalMilliseconds}ms"); + } + if (result == null) + { + result = new List(); + } return result; } @@ -76,10 +113,43 @@ namespace MP.INVE.Data return SteamCrypto.EncryptString(rawData, passPhrase); } - public List InventSessCurrList() + public List InventSessCurrList(DateTime dtStart, DateTime? dtEnd) { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); List result = new List(); - result = dbController.InventSessCurrList(); + // cerco in redis... + RedisValue rawData = redisDb.StringGet(redisSessionList); + if (!string.IsNullOrEmpty($"{rawData}")) + { + var dese = JsonConvert.DeserializeObject>($"{rawData}"); + if ((dtEnd != null) && (dese != null)) + { + result = dese.Where(x => (x.DtStart == dtStart) && (x.DtEnd == dtEnd)).ToList(); + } + else + { + result = dese; + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"InventSessCurrList Read from REDIS: {ts.TotalMilliseconds}ms"); + } + else + { + result = dbController.InventSessCurrList(dtStart, dtEnd); + + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + redisDb.StringSetAsync(redisSessionList, rawData, getRandTOut(redisLongTimeCache)); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"InventSessCurrList Read from DB: {ts.TotalMilliseconds}ms"); + } + if (result == null) + { + result = new List(); + } return result; } @@ -116,6 +186,11 @@ namespace MP.INVE.Data private static Logger Log = LogManager.GetCurrentClassLogger(); + private const string redisBaseAddr = "MP:INVE"; + + private const string redisElencoOperatori = redisBaseAddr + ":eleOperatori"; + private const string redisSessionList = redisBaseAddr + ":sessionList"; + /// /// Oggetto vocabolario x uso continuo traduzione /// diff --git a/MP.INVE/MP.INVE.csproj b/MP.INVE/MP.INVE.csproj index ac2ca808..6a443a64 100644 --- a/MP.INVE/MP.INVE.csproj +++ b/MP.INVE/MP.INVE.csproj @@ -5,7 +5,7 @@ enable enable MP.INVE - 6.16.2211.1618 + 6.16.2211.1711 diff --git a/MP.INVE/Pages/Session.razor b/MP.INVE/Pages/Session.razor index 13318d17..55757515 100644 --- a/MP.INVE/Pages/Session.razor +++ b/MP.INVE/Pages/Session.razor @@ -1,57 +1,87 @@ @page "/Session" +
-
-

Sessione

+
+
+

Sessione

+
+
+
+
+ In corso +
+ +
+ Concluse +
+
+
+
+ @if (isLoading) + { + + } + else + { - - - - - - - - - - - - - @if (elencoSessioni != null) - { - @foreach (var item in elencoSessioni) +
IdDescriptionOperatoreData inizioData fineTrasferita
+ + + + + + + + + + + + @if (elencoSessioni != null) { - - - - - - - - + @foreach (var item in elencoSessioni) + { + + + + + + @if (item.DtEnd != null) + { + + } + else + { + + } + + + } } - } - -
QRDescriptionOperatoreData inizioData fineTrasferita
- @item.InveSessID - - - - @item.Description - - @item.UserCrea - - @item.DtStart - - @item.DtEnd - - @item.Transferred -
+ + + + @item.Description + + @item.UserCrea + + @item.DtStart + + @item.DtEnd + + In corso... + + @item.Transferred +
+ + + }
diff --git a/MP.INVE/Pages/Session.razor.cs b/MP.INVE/Pages/Session.razor.cs index a35569bb..682ace4f 100644 --- a/MP.INVE/Pages/Session.razor.cs +++ b/MP.INVE/Pages/Session.razor.cs @@ -33,21 +33,32 @@ namespace MP.INVE.Pages //await FilterChanged.InvokeAsync(actFilter); await getId(); await Task.Delay(1); - elencoSessioni = MIDataservice.InventSessCurrList(); + await reloadData(); } +#if false protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { - await JSRuntime.InvokeVoidAsync("clearContent", $"qrCodeImg_{101}"); - await JSRuntime.InvokeVoidAsync("displayQr", $"qrCodeImg_{101}", rawCode); + } + } +#endif + + private bool inCorso { get; set; } = true; + protected async Task toggle() + { + inCorso = !inCorso; + await reloadData(); } + protected string BaseUrlTab { get => $"{Configuration["ServerConf:BaseUrlJumper"]}"; } private int idOperatore { get; set; } = 0; private int currIdSess { get; set; } = 0; private string authKey { get; set; } = ""; + private DateTime dtStart { get; set; } = DateTime.Now.AddMonths(-1); + private DateTime dtEnd { get; set; } = DateTime.Now; protected string rawCode { @@ -59,10 +70,27 @@ namespace MP.INVE.Pages } } + private bool isLoading { get; set; } = false; - protected void getCurrSess(int idSess) + private async Task reloadData() + { + await Task.Delay(1); + isLoading = true; + if (inCorso) + { + elencoSessioni = MIDataservice.InventSessCurrList(dtStart, null); + } + else + { + elencoSessioni = MIDataservice.InventSessCurrList(dtStart, dtEnd); + } + isLoading = false; + } + protected async Task getCurrSess(int idSess) { currIdSess = idSess; + await JSRuntime.InvokeVoidAsync("clearContent", $"qrCodeImg_{101}"); + await JSRuntime.InvokeVoidAsync("displayQr", $"qrCodeImg_{101}", rawCode); } [Inject] @@ -83,6 +111,7 @@ namespace MP.INVE.Pages { idOperatore = local.MatrOpr; authKey = local.hashAuthKey; + } } } diff --git a/MP.INVE/Program.cs b/MP.INVE/Program.cs index 1326542e..7fab8411 100644 --- a/MP.INVE/Program.cs +++ b/MP.INVE/Program.cs @@ -41,7 +41,6 @@ builder.Services.AddHttpContextAccessor(); builder.Services.AddSingleton(redisMultiplexer); builder.Services.AddSingleton(); builder.Services.AddScoped(); -builder.Services.AddScoped(); // aggiungere servizio da usare come DI x gestione session, aggiungere anche local storage builder.Services.AddBlazoredSessionStorage(); diff --git a/MP.INVE/Resources/ChangeLog.html b/MP.INVE/Resources/ChangeLog.html index c57285e7..553cdbb8 100644 --- a/MP.INVE/Resources/ChangeLog.html +++ b/MP.INVE/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOINVE -

Versione: 6.16.2211.1618

+

Versione: 6.16.2211.1711


Note di rilascio:
  • diff --git a/MP.INVE/Resources/VersNum.txt b/MP.INVE/Resources/VersNum.txt index 6469485d..882eb457 100644 --- a/MP.INVE/Resources/VersNum.txt +++ b/MP.INVE/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2211.1618 +6.16.2211.1711 diff --git a/MP.INVE/Resources/manifest.xml b/MP.INVE/Resources/manifest.xml index dacc17ff..86641f24 100644 --- a/MP.INVE/Resources/manifest.xml +++ b/MP.INVE/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2211.1618 + 6.16.2211.1711 https://nexus.steamware.net/repository/SWS/MP-INVE/stable/LAST/MP.INVE.zip https://nexus.steamware.net/repository/SWS/MP-INVE/stable/LAST/ChangeLog.html false diff --git a/MP.INVE/appsettings.json b/MP.INVE/appsettings.json index a25eaf4a..6d233535 100644 --- a/MP.INVE/appsettings.json +++ b/MP.INVE/appsettings.json @@ -18,7 +18,7 @@ "cacheCheckArtUsato": "2", "redisLongTimeCache": "15", "MpIoBaseUrl": "http://localhost:20967/", - "BaseUrl": "https://iis02.egalware.com/MP/MAG/SMART/PLScanner?" + "BaseUrl": "https://iis02.egalware.com/MP/MAG/SMART/PLScanner?", "BaseUrlJumper": "https://iis02.egalware.com/MP/jumper?" } }