Files
2025-07-24 18:59:00 +02:00

265 lines
7.7 KiB
C#

using IOB_MAN.Core.DTO;
using IOB_MAN.Core.SDK;
using IOB_MAN.Core.Services;
using Microsoft.AspNetCore.Components;
using Newtonsoft.Json;
using System.Globalization;
namespace IOB_MAN.Components.Pages
{
public partial class FlogDetail : IDisposable
{
#region Public Properties
[Parameter]
public string CodIob
{
get => codIob;
set => codIob = value;
}
#endregion Public Properties
#region Public Methods
public void Dispose()
{
currMem = new plcMemMapExt();
AllFluxList = new List<FluxLogStatsDTO.ParetoVals>();
FluxDetailList = new List<FluxLogStatsDTO.ParetoVals>();
DataLogList = new List<FluxLogStatsDTO.DataLog>();
IobList = new List<string>();
MemAreaEdit = new dataConfTSVC();
MemAreaOrig = new dataConfTSVC();
CodFluxSel = "";
currConfFile = "";
numChanges = 0;
codIob = "";
}
#endregion Public Methods
#region Protected Properties
protected string CodIobSel
{
get => codIob;
set
{
if (codIob != value)
{
CodFluxSel = "";
codIob = value;
ReloadConfig();
ReloadData();
}
}
}
protected DateTime DtRif
{
get => dtRif;
set
{
if (dtRif != value)
{
CodFluxSel = "";
dtRif = value;
ReloadData();
}
}
}
[Inject]
protected FluxLogManService FLMService { get; set; } = null!;
[Inject]
protected NavigationManager NavMan { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected override void OnInitialized()
{
IobList = FLMService.CurrIobConf.ListIOB.Select(x => x.Key).ToList();
}
protected override void OnParametersSet()
{
ReloadData();
ReloadConfig();
}
#endregion Protected Methods
#region Private Fields
private string CodFluxSel = "";
private string currConfFile = "";
private DateTime dtRif = DateTime.Today;
private dataConfTSVC MemAreaOrig = new dataConfTSVC();
private int numChanges = 0;
#endregion Private Fields
#region Private Properties
private List<FluxLogStatsDTO.ParetoVals> AllFluxList { get; set; } = new List<FluxLogStatsDTO.ParetoVals>();
private string codIob { get; set; } = "";
private string ComputerName
{
get => Environment.MachineName;
}
/// <summary>
/// Conf memoria IOB
/// </summary>
private plcMemMapExt currMem { get; set; } = new plcMemMapExt();
private List<FluxLogStatsDTO.DataLog> DataLogList { get; set; } = new List<FluxLogStatsDTO.DataLog>();
private string DomainName
{
get => Environment.UserDomainName;
}
private List<FluxLogStatsDTO.ParetoVals> FluxDetailList { get; set; } = new List<FluxLogStatsDTO.ParetoVals>();
private List<string> IobList { get; set; } = new List<string>();
private dataConfTSVC MemAreaEdit { get; set; } = new dataConfTSVC();
private bool showDetail
{
get => !string.IsNullOrEmpty(CodFluxSel);
}
private bool showSave
{
get => numChanges > 0;
}
private string UserName
{
get => Environment.UserName;
}
#endregion Private Properties
#region Private Methods
/// <summary>
/// Processing del ritorno editing memArea
/// </summary>
/// <param name="memAreaEdit"></param>
private void DoSave()
{
SaveConfig();
// rilettura finale conf
ReloadConfig();
}
private void DoShowDetail(string codFlux)
{
CodFluxSel = codFlux;
if (showDetail)
{
FluxDetailList = FLMService.FluxLogDetailPareto(CodIobSel, DtRif, CodFluxSel);
DataLogList = FLMService.FluxLogDataLog(CodIobSel, DtRif, CodFluxSel);
//ReloadConfig();
// recupero area UM...
if (currMem.mMapRead.ContainsKey(CodFluxSel))
{
MemAreaEdit = currMem.mMapRead[CodFluxSel];
MemAreaOrig = (dataConfTSVC)MemAreaEdit.Clone();
}
}
else
{
FluxDetailList = new List<FluxLogStatsDTO.ParetoVals>();
DataLogList = new List<FluxLogStatsDTO.DataLog>();
MemAreaEdit = new dataConfTSVC();
MemAreaOrig = new dataConfTSVC();
}
}
/// <summary>
/// Legge elenco conf parametri da file json dell'IOB corrente
/// </summary>
private void ReloadConfig()
{
// cerco IOB
string tipoIob = FLMService.IobType(CodIobSel);
if (!string.IsNullOrEmpty(tipoIob))
{
var iobData = FLMService.GetTargetConf(tipoIob);
// calcolo percorso file di conf
currConfFile = Path.Combine(iobData.ConfDir, $"{CodIobSel}.json");
if (File.Exists(currConfFile))
{
string rawData = File.ReadAllText(currConfFile);
if (rawData != null)
{
try
{
currMem = JsonConvert.DeserializeObject<plcMemMapExt>(rawData) ?? new plcMemMapExt();
numChanges = 0;
}
catch { }
}
}
}
}
/// <summary>
/// Rilettura dati
/// </summary>
private void ReloadData()
{
AllFluxList = FLMService.FluxLogDailyPareto(CodIobSel, DtRif);
}
private void SaveConfig()
{
// scrivo file!
if (File.Exists(currConfFile))
{
DateTime adesso = DateTime.Now;
// faccio backup
string fileNameOnly = Path.GetFileName(currConfFile);
string baseDir = Path.GetDirectoryName(currConfFile) ?? "";
if (!string.IsNullOrEmpty(baseDir))
{
string bcfFile = Path.Combine(baseDir, $"{fileNameOnly}_{adesso:yyMMdd-HHmmss}.bck");
File.Copy(currConfFile, bcfFile);
// serializzo e salvo...
JsonSerializerSettings jsSet = new JsonSerializerSettings()
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore,
Culture = CultureInfo.InvariantCulture
};
string rawData = JsonConvert.SerializeObject(currMem, jsSet);
File.WriteAllText(currConfFile, rawData);
}
}
}
/// <summary>
/// Salva evento modifica x gestione pulsante save
/// </summary>
/// <param name="memAreaEdit"></param>
private void SetUpdated(bool? changed)
{
if (changed ?? false)
{
numChanges++;
}
}
#endregion Private Methods
}
}