Ok componente editing config!

This commit is contained in:
Samuele Locatelli
2024-09-21 10:26:46 +02:00
parent 365a3653b4
commit e3421fb657
15 changed files with 528 additions and 123 deletions
+153
View File
@@ -0,0 +1,153 @@
using EgwControlCenter.Core.Models;
using Newtonsoft.Json;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace EgwControlCenter.Core
{
public class AppControlService
{
#region Public Constructors
public AppControlService()
{
Assembly assembly = Assembly.GetExecutingAssembly();
string startDir = Path.GetDirectoryName(assembly.Location)!;
ConfDir = startDir;
DataDir = Environment.GetEnvironmentVariable("ClickOnce_DataDirectory") ?? startDir;
CurrCheck = new ReleaseChecker(ConfDir, DataDir);
Log.Trace($"Folder Setup | {ConfDir} | {DataDir}");
}
#endregion Public Constructors
#region Public Events
public event Action EA_ConfigUpdated = null!;
#endregion Public Events
#region Public Properties
public int RefreshPeriod
{
get => CurrCheck.CurrPatrolCont.RefreshIntSec;
set
{
if (CurrCheck.CurrPatrolCont.RefreshIntSec != value)
{
// verifico ammissibilità
CurrCheck.CurrPatrolCont.RefreshIntSec = value < 1 ? 1 : value > 3600 ? 3600 : value;
ReportConfigUpd();
}
}
}
public int VetoCheck
{
get => CurrCheck.CurrPatrolCont.VetoCheckMinutes;
set
{
if (CurrCheck.CurrPatrolCont.VetoCheckMinutes != value)
{
// verifico ammissibilità
CurrCheck.CurrPatrolCont.VetoCheckMinutes = value < 1 ? 1 : value > 14400 ? 14400 : value;
ReportConfigUpd();
}
}
}
public List<ControlTarget> TargetList
{
get => CurrCheck.CurrPatrolCont.TargetList;
set
{
if (CurrCheck.CurrPatrolCont.TargetList != value)
{
CurrCheck.CurrPatrolCont.TargetList = value;
ReportConfigUpd();
}
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// Effettua rilettura configurazione e setup controlli...
/// </summary>
/// <returns></returns>
public void DoReloadConfig()
{
try
{
CurrCheck = new ReleaseChecker(ConfDir, DataDir);
Log.Trace($"Riletta config Setup | {ConfDir} | {DataDir}");
}
catch (Exception exc)
{
Log.Equals($"Eccezione in DoReloadConfig{Environment.NewLine}{exc}");
}
ReportConfigUpd();
}
/// <summary>
/// Effettua salvataggio configurazione
/// </summary>
/// <returns></returns>
public void DoSaveConfig()
{
try
{
var rawData = JsonConvert.SerializeObject(CurrCheck.CurrPatrolCont, Formatting.Indented);
if (rawData != null && rawData.Length > 2)
{
File.WriteAllText(CurrCheck.ConfPath, rawData);
Log.Trace($"Effettuato salvataggio Config Setup! | {ConfDir} | {DataDir}");
}
}
catch (Exception exc)
{
Log.Equals($"Eccezione in DoSaveConfig{Environment.NewLine}{exc}");
}
ReportConfigUpd();
}
#endregion Public Methods
#region Private Fields
/// <summary>
/// Classe logger
/// </summary>
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Private Properties
private string ConfDir { get; set; } = "";
private ReleaseChecker CurrCheck { get; set; } = null!;
private string DataDir { get; set; } = "";
#endregion Private Properties
#region Private Methods
private void ReportConfigUpd()
{
if (EA_ConfigUpdated != null)
{
EA_ConfigUpdated?.Invoke();
}
}
#endregion Private Methods
}
}
+13
View File
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwControlCenter.Core
{
public class Const
{
public static string EditPwd = "24068Seriate";
}
}
+67 -38
View File
@@ -16,41 +16,39 @@ namespace EgwControlCenter.Core
{
#region Public Constructors
/// <summary>
/// Init classe ReleaseChecker
/// </summary>
/// <param name="appDir"></param>
/// <param name="dataDir"></param>
/// <param name="confName"></param>
public ReleaseChecker(string appDir, string dataDir, string confName)
{
AppDir = appDir;
DataDir = dataDir;
ConfName = confName;
// imposto veto controlli secondo config verifico path...
if (string.IsNullOrEmpty(AppDir))
{
AppDir = AppDomain.CurrentDomain.BaseDirectory;
}
if (File.Exists(ConfPath))
{
var rawData = File.ReadAllText(ConfPath);
if (!string.IsNullOrEmpty(rawData))
{
CurrPatrolCont = JsonConvert.DeserializeObject<PatrolSettings>(rawData) ?? new PatrolSettings();
// imposto il veto dalla conf...
AutoRefreshVeto = TimeSpan.FromMinutes(CurrPatrolCont.VetoCheckMinutes);
}
}
// cerco se presente file status precedente e lo ricarico...
if (File.Exists(StatusPath))
{
var rawData = File.ReadAllText(StatusPath);
if (!string.IsNullOrEmpty(rawData))
{
ListStatus = JsonConvert.DeserializeObject<List<TargetStatus>>(rawData) ?? new List<TargetStatus>();
}
}
InitObj(appDir, dataDir, confName);
}
/// <summary>
/// Init classe ReleaseChecker
/// </summary>
/// <param name="appDir"></param>
/// <param name="dataDir"></param>
public ReleaseChecker(string appDir, string dataDir)
{
InitObj(appDir, dataDir, CPName);
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// Path file di conf check
/// </summary>
public string ConfPath
{
get => Path.Combine(AppDir, ConfName);
}
/// <summary>
/// Configurazione degli oggetti da monitorare
/// </summary>
@@ -260,25 +258,19 @@ namespace EgwControlCenter.Core
private TimeSpan AutoRefreshVeto { get; set; } = TimeSpan.FromSeconds(30);
private string ConfName { get; set; } = "";
/// <summary>
/// Path file di conf check
/// </summary>
private string ConfPath
{
get => Path.Combine(AppDir, ConfName);
}
private string CPName { get; set; } = "ConfPatrol.json";
private string DataDir { get; set; } = "";
private string StatusName { get; set; } = "LastStatus.json";
private string LSName { get; set; } = "LastStatus.json";
/// <summary>
/// Path file salvataggio status
/// </summary>
private string StatusPath
{
get => Path.Combine(DataDir, StatusName);
//get => Path.Combine(ApplicationDeployment.CurrentDeployment.DataDirectory, StatusName);
get => Path.Combine(DataDir, LSName);
//get => Path.Combine(ApplicationDeployment.CurrentDeployment.DataDirectory, LSName);
}
#endregion Private Properties
@@ -339,6 +331,43 @@ namespace EgwControlCenter.Core
return answ;
}
/// <summary>
/// init privato oggetti
/// </summary>
/// <param name="appDir"></param>
/// <param name="dataDir"></param>
/// <param name="confName"></param>
private void InitObj(string appDir, string dataDir, string confName)
{
AppDir = appDir;
DataDir = dataDir;
ConfName = confName;
// imposto veto controlli secondo config verifico path...
if (string.IsNullOrEmpty(AppDir))
{
AppDir = AppDomain.CurrentDomain.BaseDirectory;
}
if (File.Exists(ConfPath))
{
var rawData = File.ReadAllText(ConfPath);
if (!string.IsNullOrEmpty(rawData))
{
CurrPatrolCont = JsonConvert.DeserializeObject<PatrolSettings>(rawData) ?? new PatrolSettings();
// imposto il veto dalla conf...
AutoRefreshVeto = TimeSpan.FromMinutes(CurrPatrolCont.VetoCheckMinutes);
}
}
// cerco se presente file status precedente e lo ricarico...
if (File.Exists(StatusPath))
{
var rawData = File.ReadAllText(StatusPath);
if (!string.IsNullOrEmpty(rawData))
{
ListStatus = JsonConvert.DeserializeObject<List<TargetStatus>>(rawData) ?? new List<TargetStatus>();
}
}
}
/// <summary>
/// Recupera oggetto releaseDTO da file indicato
/// </summary>