Ok componente editing config!
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user