Files
Samuele E. Locatelli bd08659e8c SPEC:
- fix riferimenti FluxLog
2025-03-08 10:47:22 +01:00

244 lines
7.0 KiB
C#

using Microsoft.AspNetCore.Components;
using MP.Data.DbModels;
using MP.SPEC.Components;
using MP.SPEC.Data;
using NLog;
using EgwCoreLib.Razor;
namespace MP.SPEC.Pages
{
public partial class PARAMS : IDisposable
{
#region Public Methods
public void Dispose()
{
aTimer.Elapsed -= ElapsedTimer;
aTimer.Stop();
aTimer.Close();
aTimer.Dispose();
GC.Collect();
}
public void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e)
{
// controllo se sia scaduto tempo massimo (in redis) x ricaricare pagina in modo completo...
var dtRif = MDService.ExpiryReloadParamGet();
if (dtRif > DateTime.Now)
{
Log.Trace("----- Elapsed check PARAMS.cs -----");
}
else
{
var pUpd = Task.Run(async () =>
{
MDService.ExpiryReloadParamSet(DateTime.Now.AddSeconds(intForceReload));
aTimer.Elapsed -= ElapsedTimer;
aTimer.Stop();
aTimer.Close();
aTimer.Dispose();
await Task.Delay(1);
await InvokeAsync(() => forceReloadCache());
});
pUpd.Wait();
}
}
public void StartTimer()
{
Random random = new Random();
double multPer = 0.01 * random.Next(50, 300);
aTimer = new System.Timers.Timer(RefreshPeriod * multPer);
aTimer.Elapsed += ElapsedTimer;
aTimer.Enabled = true;
aTimer.AutoReset = true;
aTimer.Start();
}
#endregion Public Methods
#region Protected Fields
protected int CurrCounter = 0;
protected int intForceReload = 600;
protected DataPager? pagerODL = null!;
#endregion Protected Fields
#region Protected Properties
[Inject]
protected MpDataService MDService { get; set; } = null!;
protected int RefreshPeriod
{
get => currFilter.TempoAgg;
}
#endregion Protected Properties
#region Protected Methods
protected async Task detailSel(FluxLogModel newRec)
{
await Task.Delay(1);
var updFilter = currFilter;
DateTime adesso = DateTime.Now.AddSeconds(1);
updFilter.LiveUpdate = (newRec == null);
// sistemo la data di riferimento x eventuale snapshot nel passato
updFilter.dtRif = newRec != null ? newRec.dtEvento : null;
if (newRec != null)
{
updFilter.lastUpdate = updFilter.lastUpdate == "-" ? $"{adesso:yyyy/MM/dd HH:mm:ss}" : updFilter.lastUpdate;
updFilter.IdxMacchina = newRec.IdxMacchina;
//updFilter.CodFlux = newRec.CodFlux;
}
else
{
updFilter.lastUpdate = "-";
}
// salvo filtro
currFilter = updFilter;
}
protected void ForceReload(int newNum)
{
numRecord = newNum;
}
/// <summary>
/// Esegue svuotamento forzato cache + reload pagina ogni minuto...
/// </summary>
protected async Task forceReloadCache()
{
Log.Debug("----- forceReloadCache on PARAMS.cs -----");
await Task.Delay(1);
await MDService.FlushRedisCache();
await Task.Delay(1);
// rimando a pagina corrente
NavManager.NavigateTo(NavManager.Uri, true, true);
}
protected void ForceReloadPage(int newNum)
{
currPage = newNum;
DateTime adesso = DateTime.Now.AddSeconds(1);
var updFilter = currFilter;
//updFilter.LiveUpdate = (currPage == 1);
updFilter.LiveUpdate = (currFilter.CurrPage == 1);
updFilter.lastUpdate = updFilter.LiveUpdate ? "-" : $"{adesso:yyyy/MM/dd HH:mm:ss}";
// salvo filtro
currFilter = updFilter;
StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
isLoading = true;
isFiltering = true;
// fix pagina
await Task.Delay(1);
var modFilter = currFilter;
modFilter.CurrPage = 1;
modFilter.LiveUpdate = (currPage == 1);
currFilter = modFilter;
await Task.Delay(1);
setExpiryReload();
StartTimer();
isFiltering = false;
}
protected async Task pgResetReq(bool doReset)
{
if (doReset)
{
await Task.Delay(1);
if (pagerODL != null)
{
pagerODL.resetCurrPage();
}
}
}
protected void updateTotal(int newTotCount)
{
totalCount = newTotCount;
}
protected void UpdateTotCount(int newTotCount)
{
totalCount = newTotCount;
}
#endregion Protected Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private System.Timers.Timer aTimer = null!;
#endregion Private Fields
#region Private Properties
private SelectFluxParams currFilter { get; set; } = new SelectFluxParams();
private int currPage
{
get => currFilter.CurrPage;
set => currFilter.CurrPage = value;
}
private bool isFiltering { get; set; } = false;
private bool isLoading { get; set; } = true;
[Inject]
private NavigationManager NavManager { get; set; } = null!;
private int numRecord
{
get => currFilter.NumRec;
set => currFilter.NumRec = value;
}
private int totalCount { get; set; } = 0;
#endregion Private Properties
#region Private Methods
private void setExpiryReload()
{
// verifico se ho una scadenza expiry del periodo desiderato, sennò imposto nuova...
var dtRif = MDService.ExpiryReloadParamGet();
if (dtRif <= DateTime.Now)
{
MDService.ExpiryReloadParamSet(DateTime.Now.AddSeconds(intForceReload));
}
}
private async Task updateFilter(SelectFluxParams newParams)
{
isFiltering = false;
isLoading = true;
await Task.Delay(1);
currPage = 1;
if (newParams.CurrPage == 0)
{
newParams.CurrPage = 1;
//newParams.LiveUpdate = false;
}
else
{
//newParams.LiveUpdate = (currPage == 1);
}
await Task.Delay(1);
await InvokeAsync(() => StateHasChanged());
currFilter = newParams;
isLoading = false;
}
#endregion Private Methods
}
}