Files
Kanalsanierungsverwaltung/SanSystem/Global.cs
2023-01-14 09:39:16 +01:00

210 lines
6.3 KiB
C#

using KlassenBIB;
using Microsoft.Win32;
using SanShared;
using SanSystem.Einstellungen;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace SanSystem
{
class Global
{
public event EventHandler RequestBuildNewLinerReste;
public event EventHandler OnStatusMessageChanged;
public static readonly Global instance = new Global();
const string userroot = "HKEY_CURRENT_USER\\Software";
const string firmkey = "Cosysda";
const string subkey = "SanManager";
const string speicherpfad_to_projekts = "projekte";
private readonly string programmversion = string.Empty;
public string AktuelleBesatzung = string.Empty;
string projektpfad = "18-850";
string statusMessage = "";
public string StatusMessage
{
get
{
return statusMessage;
}
set
{
if (statusMessage == value) return;
statusMessage = value;
StatusMessageChanged(EventArgs.Empty);
}
}
public CSVParser.AcceptedCSVFormats AnlageType = CSVParser.AcceptedCSVFormats.BLUELIGHT;
public void StatusMessageChanged(EventArgs args)
{
EventHandler handler = OnStatusMessageChanged;
if (handler != null)
handler(this, args);
}
public void BuildNewLinerReste(EventArgs args)
{
EventHandler handler = RequestBuildNewLinerReste;
if (handler != null)
handler(this, args);
}
public string PROGRAMMVERSION
{
get
{
string version = string.Empty;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SanSystem." + "version.txt"))
{
using (StreamReader reader = new StreamReader(stream))
{
version = reader.ReadToEnd();
}
}
return version;
}
}
public string ProjektNummer
{
get
{
return projektpfad;
}
set
{
projektpfad = value;
}
}
internal void SetProjekt(Projekt projekt)
{
Database.Datenbank.Instance.SaveProjekt();
this.ProjektNummer = projekt.Nummer;
Database.Datenbank.Instance.loadedProjekt = null;
Database.Datenbank.Instance.LoadProjekt(projekt.Nummer);
if (!Directory.Exists(Projektpfad)) Directory.CreateDirectory(Projektpfad);
Database.Datenbank.Instance.TeufelDB.Projekte.Add(projekt);
Database.Datenbank.Instance.InitProjekt(projekt, Projektpfad);
}
public string Projektpfad
{
get
{
return "C:\\";// Path.Combine(Properties.Settings.Default.DATABASEMAIN,speicherpfad_to_projekts, projektpfad);
}
}
public static Global Instance
{
get
{
return instance;
}
}
public void ChangeProjekt(string projektnummer)
{
Database.Datenbank.Instance.SaveProjekt();
this.ProjektNummer = projektnummer;
Database.Datenbank.Instance.loadedProjekt = null;
string pfad = Path.Combine(Projektpfad);
if (!Directory.Exists(pfad)) Directory.CreateDirectory(pfad);
Database.Datenbank.Instance.LoadProjekt(ProjektNummer);
}
void LadeRegistry()
{
/*string key = "NjAwNjQzQDMxMzkyZTM0MmUzMG5La2UzQ1F0R3dFZEh5VWtGazZ0aHpUWi9XdkxJT2xCbktXRXFWc0ZsdzA9";
byte[] s = Encoding.ASCII.GetBytes(key);
var i = BitConverter.ToString(s);
Trace.WriteLine(i.ToString());
*/
string keyName = userroot + "\\" + firmkey + "\\" + subkey;
string lastProjektNummer = "";
string vorarbeiter = "";
string helfer = "";
try
{
if(Registry.GetValue(keyName,"LastProjekt","") != null)
lastProjektNummer = Registry.GetValue(keyName, "LastProjekt", "").ToString();
if (Registry.GetValue(keyName, "Vorarbeiter", "") != null)
vorarbeiter = Registry.GetValue(keyName, "Vorarbeiter", "").ToString();
if (Registry.GetValue(keyName, "Helfer", "") != null)
helfer = Registry.GetValue(keyName, "Helfer", "").ToString();
ProjektNummer = lastProjektNummer;
}
catch
{ }
if(vorarbeiter != "")
{
AktuelleBesatzung = string.Format("{0} / {1}", vorarbeiter, helfer);
}
}
void SpeicherInRegistry()
{
string keyName = userroot + "\\" + firmkey + "\\" + subkey;
Registry.SetValue(keyName, "LastProjekt", ProjektNummer);
string[] besatzung = AktuelleBesatzung.Split('/');
if(besatzung.Length >0)
{
Registry.SetValue(keyName, "Vorarbeiter", besatzung[0]);
if(besatzung.Length > 1)
{
Registry.SetValue(keyName, "Helfer", besatzung[1]);
}
}
}
public static bool CheckNetworkAnlageAvaible()
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
SoftwareConfiguration softwareConfiguration = new SoftwareConfiguration();
string data = "aaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 20;
PingReply reply = pingSender.Send(softwareConfiguration.GetAnlageIP(), timeout, buffer, options);
return reply.Status == IPStatus.Success;
}
public Global()
{
LadeRegistry();
}
~Global()
{
SpeicherInRegistry();
}
}
}