153 lines
4.5 KiB
C#
153 lines
4.5 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using MP.FileData.DTO;
|
|
using MP.Prog.Data;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MP.Prog.Components
|
|
{
|
|
public partial class ArchiveStatus : IDisposable
|
|
{
|
|
#region Public Methods
|
|
|
|
public void Dispose()
|
|
{
|
|
ListRecords = null;
|
|
GC.Collect();
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Protected Properties
|
|
|
|
[Inject]
|
|
protected FileArchDataService DataService { get; set; }
|
|
|
|
protected int percLoading { get; set; } = 0;
|
|
protected bool showProgress { get; set; } = false;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Protected Methods
|
|
|
|
protected async Task ArchiveCheck(int maxHour)
|
|
{
|
|
showProgress = true;
|
|
percLoading = 0;
|
|
await verificaTutte(maxHour);
|
|
|
|
setupMessages.Add($"Effettuata verifica e rilettura di {numChecks} files!");
|
|
}
|
|
|
|
protected async Task ArchiveSingleCheck(string idxMacchina, int maxHour)
|
|
{
|
|
showProgress = true;
|
|
percLoading = 0;
|
|
await verificaSingola(idxMacchina, maxHour, 2);
|
|
|
|
setupMessages.Add($"Effettuata verifica e rilettura di {numChecks} files!");
|
|
}
|
|
|
|
protected async Task ClearMessage()
|
|
{
|
|
await Task.Delay(10);
|
|
setupMessages = new List<string>();
|
|
}
|
|
|
|
protected async Task ForceCheck(int maxHour)
|
|
{
|
|
setupMessages.Add("Inizio Analisi Archivio...");
|
|
ListRecords = null;
|
|
await Task.Delay(1);
|
|
await ArchiveCheck(maxHour);
|
|
await ClearMessage();
|
|
await ReloadData();
|
|
}
|
|
|
|
protected async Task ForceCheckMacchina(string idxMacchina)
|
|
{
|
|
setupMessages.Add("Inizio Analisi Archivio...");
|
|
ListRecords = null;
|
|
await Task.Delay(1);
|
|
await ArchiveSingleCheck(idxMacchina, 0);
|
|
await ClearMessage();
|
|
await ReloadData();
|
|
}
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
ListRecords = null;
|
|
await ReloadData();
|
|
}
|
|
|
|
protected async Task ReloadData()
|
|
{
|
|
//sw.Restart();
|
|
await Task.Delay(1);
|
|
numChecks = 0;
|
|
ListRecords = await DataService.GetArchiveStatus();
|
|
totalCount = ListRecords.Count;
|
|
await Task.Delay(1);
|
|
setupMessages = new List<string>();
|
|
showProgress = false;
|
|
percLoading = 0;
|
|
//sw.Stop();
|
|
//var elapsTime = sw.Elapsed;
|
|
//Log.Trace($"ArchiveStatus | ReloadData | # rec: {ListRecords.Count} | {elapsTime.TotalMilliseconds}ms");
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Fields
|
|
|
|
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
private List<ArchiveStatusDTO> ListRecords;
|
|
|
|
private int numChecks = 0;
|
|
|
|
private Stopwatch sw = new Stopwatch();
|
|
private int totalCount = 0;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Private Properties
|
|
|
|
private List<string> setupMessages { get; set; } = new List<string>();
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Private Methods
|
|
|
|
private async Task verificaSingola(string idxMacchina, int numDays, int numMacchine)
|
|
{
|
|
sw.Restart();
|
|
// recupero elenco macchine
|
|
percLoading += 100 / numMacchine;
|
|
numChecks = await DataService.updateMachineArchive(idxMacchina, numDays, true, false);
|
|
await Task.Delay(1);
|
|
setupMessages.Add($"{idxMacchina}: {numChecks} files");
|
|
await InvokeAsync(StateHasChanged);
|
|
await Task.Delay(1);
|
|
sw.Stop();
|
|
var elapsTime = sw.Elapsed;
|
|
Log.Trace($"verificaSingola | idxMacchina: {idxMacchina} | {elapsTime.TotalMilliseconds}ms");
|
|
}
|
|
|
|
private async Task verificaTutte(int numDays)
|
|
{
|
|
// recupero elenco macchine
|
|
var listaMacchine = await DataService.MacchineGetAll();
|
|
int numMacchine = listaMacchine.Count();
|
|
foreach (var item in listaMacchine.Where(x => !string.IsNullOrEmpty(x.BasePath)).ToList())
|
|
{
|
|
await verificaSingola(item.IdxMacchina, numDays, numMacchine);
|
|
}
|
|
}
|
|
|
|
#endregion Private Methods
|
|
}
|
|
} |