using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
#pragma warning disable CS4014 // Da dieser Aufruf nicht abgewartet wird, wird die Ausführung der aktuellen Methode fortgesetzt, bevor der Aufruf abgeschlossen ist
#pragma warning disable CC0001 // Use var instead
namespace PEP_Tool
{
///
/// Interaktionslogik für MainWindow.xaml
///
public partial class MainWindow : Window, INotifyPropertyChanged
{
public static MainWindow main;
public event PropertyChangedEventHandler PropertyChanged;
FileSystemWatcher fs = new FileSystemWatcher(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\", "*.json");
//DispatcherTimer jsonTimer = new DispatcherTimer();
DispatcherTimer bemerkungTimer = new DispatcherTimer();
DispatcherTimer telefonTimer = new DispatcherTimer();
DispatcherTimer newVersionTimer = new DispatcherTimer();
DispatcherTimer lastChangeTimer = new DispatcherTimer();
bool checkForChange = false;
#region Properties
public List ZuweisungsMoeglichkeiten { get; set; }
public Dictionary> AbteilungsNamen { get; set; }
private List userList;
public List UserList
{
get { return userList; }
set
{
if (propertyChangeAllowed)
{
userList = value;
OnPropertyChanged();
}
}
}
public List DefaultUserList { get; set; }
private List bemerkungen = new List();
public List Bemerkungen
{
get { return bemerkungen; }
set
{
if (propertyChangeAllowed)
{
bemerkungen = value;
OnPropertyChanged();
}
}
}
private bool bemerkungIsEnabled = true;
public bool BemerkungIsEnabled
{
get { return bemerkungIsEnabled; }
set
{
if (propertyChangeAllowed)
{
bemerkungIsEnabled = value;
OnPropertyChanged();
}
}
}
private List zuweisungen = new List();
public List Zuweisungen
{
get
{
return zuweisungen;
}
set
{
zuweisungen = value;
OnPropertyChanged();
}
}
private List telefon = new List();
public List TelefonList
{
get
{
return telefon;
}
set
{
telefon = value;
OnPropertyChanged();
}
}
private bool telefonIsEnabled = true;
public bool TelefonIsEnabled
{
get { return telefonIsEnabled; }
set
{
if (propertyChangeAllowed)
{
telefonIsEnabled = value;
OnPropertyChanged();
}
}
}
private string lastChangeTime;
public string LastChangeTime
{
get
{
return lastChangeTime;
}
set
{
if (lastChangeTime != value)
{
lastChangeTime = value;
Dispatcher.BeginInvoke(new Action(() =>
{
if (checkForChange)
{
lblLastChange.Text = lastChangeTime;
lblLastChange.Foreground = new SolidColorBrush(Colors.Red);
}
}));
}
}
}
#endregion
public MainWindow()
{
if (Properties.Settings.Default.newVersionString != Properties.Settings.Default.Version)
{
Properties.Settings.Default.newVersionScreen = true;
Properties.Settings.Default.newVersionString = Properties.Settings.Default.Version;
Properties.Settings.Default.Save();
}
if (System.IO.File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Version.txt"))
{
main = this;
PreStart(1);
}
#if !DEBUG
else if (System.IO.File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt"))
{
main = this;
PreStart(2);
}
#endif
else if(Environment.CurrentDirectory == @"\\bku\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung")
{
MessageBox.Show($"Achtung:{Environment.NewLine}Dieses Programm darf nicht mehr aus dem Gruppenlaufwerk gestartet werden!{Environment.NewLine}Bitte die PEP-Tool.exe auf den Desktop kopieren und von dort starten", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Error);
Application.Current.Shutdown();
}
else
{
if (Properties.Settings.Default.newVersionScreen)
{
InitializeComponent();
NewVersionScreen nVs = new NewVersionScreen();
nVs.ShowDialog();
GetDesktopShortcuts();
main = this;
Start();
}
else
{
InitializeComponent();
GetDesktopShortcuts();
main = this;
Start();
}
}
this.Title += Properties.Settings.Default.Version;
}
public static bool MessageShown { get; set; } = false;
public static bool propertyChangeAllowed { get; set; } = true;
//public static bool PersonalNummerIsEnabled { get; set; } = true;
///
///
///
/// 1: Neue Version, 2: Wartungsarbeiten
private async void PreStart(int VersionOrMaintenance)
{
onStartup = true;
if (VersionOrMaintenance == 1)
{
Task.Run(() =>
{
Dispatcher.BeginInvoke(new Action(() =>
{
NewVersionMessageBox nVMB = new NewVersionMessageBox("Es ist eine neue Version verfügbar\nDie Anwendung kann bis zur Aktualisierung nicht gestartet werden.\n\nDie neue Version sollte in wenigen Minuten verfügbar sein.", 10, true);
nVMB.Show();
}));
});
Task.Run(() =>
{
while (!MessageShown) { }
Dispatcher.BeginInvoke(new Action(() =>
{
main.Close();
}));
});
}
else if (VersionOrMaintenance == 2)
{
Task.Run(() =>
{
Dispatcher.BeginInvoke(new Action(() =>
{
NewVersionMessageBox nVMB = new NewVersionMessageBox("Die Anwendung kann wegen Wartungsarbeiten nicht gestartet werden.\n\nDas System sollte in wenigen Minuten wieder verfügbar sein.", 10, true);
nVMB.Show();
}));
});
Task.Run(() =>
{
while (!MessageShown) { }
Dispatcher.BeginInvoke(new Action(() =>
{
main.Close();
}));
});
}
}
private async void Start()
{
//jsonTimer.Interval = TimeSpan.FromSeconds(3);
//jsonTimer.Tick += JsonTimer_Tick;
bemerkungTimer.Interval = TimeSpan.FromSeconds(10);
bemerkungTimer.Tick += BemerkungTimer_Tick;
telefonTimer.Interval = TimeSpan.FromSeconds(10);
telefonTimer.Tick += TelefonTimer_Tick;
newVersionTimer.Interval = TimeSpan.FromSeconds(10);
newVersionTimer.Tick += NewVersionTimer_Tick;
Tracker.Init_Track();
//bar.Visibility = Visibility.Visible;
//li.IsActive = true;
li.Visibility = Visibility.Visible;
await Task.Run(() =>
{
ZuweisungsMoeglichkeiten = Reader.ReadZuweisungsMoeglichkeiten();
AbteilungsNamen = Reader.ReadAbteilungsNamen();
UserList = Reader.ReadUserList();
DefaultUserList = UserList;
});
var abtFilterList = DefaultUserList.Select(p => p.Abteilung).Distinct().ToList();
abtFilterList.Insert(0, "");
abtFilterList.Sort();
cBFilterAbteilung.ItemsSource = cBFilterAbteilung2.ItemsSource = cBFilterAbteilung3.ItemsSource = abtFilterList;
//flowDocu.ItemsSource = UserList;
btnFrueh.IsEnabled = true;
btnSpaet.IsEnabled = true;
btnNacht.IsEnabled = true;
//bar.Visibility = Visibility.Collapsed;
//li.Visibility = Visibility.Collapsed;
//li.IsActive = false;
//jsonTimer.Start();
FileWatcher();
newVersionTimer.Start();
}
bool versionMessage = false;
private void NewVersionTimer_Tick(object sender, EventArgs e)
{
if (System.IO.File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Version.txt"))
{
if (!versionMessage)
{
//Task.Run(() => MessageBox.Show("Es ist eine neue Version verfügbar\nDie Anwendung wird in 60 Sekunden automatisch beendet.", "Neue Version", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification));
NewVersionMessageBox nVMB = new NewVersionMessageBox("Es ist eine neue Version verfügbar\nDie Anwendung wird in 60 Sekunden automatisch beendet.\n\n" +
"Die neue Version sollte in wenigen Minuten verfügbar sein.\n\n" +
"Sie können während der nächsten 60 Sekunden weitere Eintragungen vornehmen, die Liste drucken oder exportieren.\n\n\n", 60, false);
nVMB.ShowDialog();
versionMessage = true;
}
}
if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt"))
{
if (!versionMessage)
{
//Task.Run(() => MessageBox.Show("Es ist eine neue Version verfügbar\nDie Anwendung wird in 60 Sekunden automatisch beendet.", "Neue Version", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification));
NewVersionMessageBox nVMB = new NewVersionMessageBox("Die Anwendung muss aufgrund von Wartungsarbeiten geschlossen werden\nDie Anwendung wird in 30 Sekunden automatisch beendet.\n\n" +
"Das System wird in wenigen Minuten wieder verfügbar sein.\n\n" +
"Sie können während der nächsten 30 Sekunden die Liste drucken oder exportieren.\n\n\n", 30, false);
nVMB.ShowDialog();
versionMessage = true;
}
}
}
private async void FileWatcher()
{
FileSystemWatcher fs = new FileSystemWatcher(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\", "*.json");
fs.EnableRaisingEvents = true;
fs.IncludeSubdirectories = false;
fs.Changed += Fs_Changed;
li.Visibility = Visibility.Collapsed;
}
bool checkOldJsonData = true;
private async void Fs_Changed(object sender, FileSystemEventArgs e)
{
if(e.Name == "Zuweisungen.json")
{
await Task.Run(async () =>
{
try
{
var zuweisungenList = await Reader.CreateZuweisungenList();
if (zuweisungenList != null && Zuweisungen != null)
{
if (!Enumerable.SequenceEqual(zuweisungenList, Zuweisungen))
{
if (checkForChange)
{
var items = Zuweisungen.Except(zuweisungenList);
foreach (var item in items)
{
if (UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
{
//Debug.WriteLine(Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung);
string z = "";
if (Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
z = string.IsNullOrEmpty(Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung) ? " leer" : " " + Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung;
else
z = " leer";
string y = "";
if (zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
y = string.IsNullOrEmpty(zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung) ? " leer" : " " + zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung;
else
y = " leer";
string x = "";
x = UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath ?? "";
if (x.CountSubstring("\n") > 6)
{
var i = x.CountSubstring("\n");
x = x.Substring(0, x.IndexOf("\n")) + x.Substring(x.IndexOfNth("\n", i - 4));
}
var str = "";
var sub = $"{x.Substring(x.IndexOf("\n") + 1).TrimStart("\n".ToCharArray())}";
if (x.StartsWith("l, Bemerkung wurde geändert"))
str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
else if (x.StartsWith("l, Zuweisung wurde geändert"))
str = "l, Zuweisung wurde geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
else if (x.StartsWith("l, Zuweisung und Bemerkung wurden geändert"))
str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
else if (x.StartsWith("l, Bemerkung und Zuweisung wurden geändert"))
str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
else
str = $"l, Zuweisung wurde geändert\n\nZuweisung:{z} -> {y}";
str = str.AddLineNumbers(2);
UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath = str;
}
}
}
foreach (var user in UserList)
{
if (zuweisungenList != null)
{
if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
{
UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Zuweisung = zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Zuweisung;
//UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
}
}
}
Zuweisungen = zuweisungenList;
}
}
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
});
}
if(e.Name == "Bemerkungen.json")
{
await Task.Run(async () =>
{
try
{
var bemerkungenList = await Reader.CreateBemerkungenList();
if (bemerkungenList != null && Bemerkungen != null)
{
if (!Enumerable.SequenceEqual(bemerkungenList, Bemerkungen))
{
if (checkForChange)
{
var items = Bemerkungen.Except(bemerkungenList);
foreach (var item in items)
{
if (UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
{
string z = "";
if (Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
z = string.IsNullOrEmpty(Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung) ? " leer" : " " + Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung;
else
z = " leer";
string y = "";
if (bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
y = string.IsNullOrEmpty(bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung) ? " leer" : " " + bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung;
else
y = " leer";
string x = "";
x = UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath ?? "";
if (x.CountSubstring("\n") > 6)
{
var i = x.CountSubstring("\n");
x = x.Substring(0, x.IndexOf("\n")) + x.Substring(x.IndexOfNth("\n", i - 4));
}
var str = "";
var sub = $"{x.Substring(x.IndexOf("\n") + 1).TrimStart("\n".ToCharArray())}";
if (x.StartsWith("l, Zuweisung wurde geändert"))
str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
else if (x.StartsWith("l, Bemerkung wurde geändert"))
str = "l, Bemerkung wurde geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
else if (x.StartsWith("l, Bemerkung und Zuweisung wurden geändert"))
str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
else if (x.StartsWith("l, Zuweisung und Bemerkung wurden geändert"))
str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
else
str = $"l, Bemerkung wurde geändert\n\nBemerkung Alter Wert:{z} -> {y}";
str = str.AddLineNumbers(2);
UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath = str;
}
}
}
foreach (var user in UserList)
{
if (bemerkungenList != null)
{
if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && bemerkungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Bemerkung = bemerkungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Bemerkung;
}
}
Bemerkungen = bemerkungenList;
}
}
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
});
}
if(e.Name == "Telefon.json")
{
await Task.Run(async () =>
{
try
{
var telefonList = await Reader.CreateTelefonList();
if (telefonList != null && TelefonList != null)
{
if (!Enumerable.SequenceEqual(telefonList, TelefonList))
{
foreach (var user in UserList)
{
if (telefonList != null)
{
if (UserList.Where(p => p.PersNummer == user.PersNummer).Count() > 0 && telefonList.Where(p => p.PersNummer == user.PersNummer).Count() > 0)
{
UserList.Where(p => p.PersNummer == user.PersNummer).First().Telefon = telefonList.Where(p => p.PersNummer == user.PersNummer).First().Telefon;
//UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
}
}
}
TelefonList = telefonList;
}
}
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
});
}
checkForChange = true;
if (checkOldJsonData)
{
Bemerkungen = Reader.CreateBemerkungenList().Result;
Zuweisungen = Reader.CreateZuweisungenList().Result;
var u = UserList.Min(p => p.Datum) - TimeSpan.FromDays(10);
Bemerkungen = Bemerkungen.Except(Bemerkungen.Where(p => p.Datum < u)).ToList();
Zuweisungen = Zuweisungen.Except(Zuweisungen.Where(p => p.Datum < u)).ToList();
var json = Newtonsoft.Json.JsonConvert.SerializeObject(Zuweisungen);
json = await Crypto.EncryptString(json);
byte[] jsonB = new UTF8Encoding(true).GetBytes(json);
using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json", FileMode.Open, FileAccess.Write, FileShare.None)) //FileShare.Read geändert 18.02.19
{
if (fs != null)
{
fs.SetLength(0);
await fs.WriteAsync(jsonB, 0, jsonB.Length);
}
else fs.Dispose();
}
var jsonBem = Newtonsoft.Json.JsonConvert.SerializeObject(Bemerkungen);
jsonBem = await Crypto.EncryptString(jsonBem);
byte[] jsonByte = new UTF8Encoding(true).GetBytes(jsonBem);
using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json", FileMode.Open, FileAccess.Write, FileShare.None)) //FileShare.Read geändert 18.02.19
{
if (fs != null)
{
fs.SetLength(0);
await fs.WriteAsync(jsonByte, 0, jsonByte.Length);
}
else fs.Dispose();
}
checkOldJsonData = false;
}
}
//private async void JsonTimer_Tick(object sender, EventArgs e)
//{
// await Task.Run(async () =>
// {
// try
// {
// var zuweisungenList = await Reader.CreateZuweisungenList();
// if (zuweisungenList != null && Zuweisungen != null)
// {
// if (!Enumerable.SequenceEqual(zuweisungenList, Zuweisungen))
// {
// if (checkForChange)
// {
// //zuweisungenList.OrderBy(p => p.PersNummer);
// //Zuweisungen.OrderBy(p => p.PersNummer);
// var items = zuweisungenList.Except(Zuweisungen);
// foreach (var item in items)
// {
// if (UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// {
// //Debug.WriteLine(Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung);
// string z = "";
// if (Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// z = string.IsNullOrEmpty(Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung) ? " leer" : " " + Zuweisungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung;
// else
// z = " leer";
// string y = "";
// if (zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// y = string.IsNullOrEmpty(zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung) ? " leer" : " " + zuweisungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Zuweisung;
// else
// y = " leer";
// string x = "";
// x = UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath ?? "";
// if (x.CountSubstring("\n") > 6)
// {
// var i = x.CountSubstring("\n");
// x = x.Substring(0, x.IndexOf("\n")) + x.Substring(x.IndexOfNth("\n", i - 4));
// }
// var str = "";
// var sub = $"{x.Substring(x.IndexOf("\n") + 1).TrimStart("\n".ToCharArray())}";
// if (x.StartsWith("l, Bemerkung wurde geändert"))
// str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
// else if (x.StartsWith("l, Zuweisung wurde geändert"))
// str = "l, Zuweisung wurde geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
// else if (x.StartsWith("l, Zuweisung und Bemerkung wurden geändert"))
// str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
// else if (x.StartsWith("l, Bemerkung und Zuweisung wurden geändert"))
// str = "l, Bemerkung und Zuweisung wurden geändert\n\n" + $"{sub}\nZuweisung:{z} -> {y}";
// else
// str = $"l, Zuweisung wurde geändert\n\nZuweisung:{z} -> {y}";
// str = str.AddLineNumbers(2);
// UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath = str;
// }
// }
// }
// foreach (var user in UserList)
// {
// if (zuweisungenList != null)
// {
// if (PersonalNummerIsEnabled)
// {
// if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
// {
// UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Zuweisung = zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Zuweisung;
// //UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
// }
// //var a = UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count();
// //var b = zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.Zuweisung != user.Zuweisung).Count();
// //var c = zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count();
// //if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
// //{
// // if (zuweisungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Zuweisung != user.Zuweisung)
// // UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().FilePath = "●";
// // //UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
// //}
// }
// else
// {
// if (UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0 && zuweisungenList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0)
// UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Zuweisung = zuweisungenList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Zuweisung;
// }
// //flowDocu.ItemsSource = UserList;
// }
// }
// Zuweisungen = zuweisungenList;
// }
// }
// }
// catch (Exception ex)
// {
// LogFile.WriteLine(ex.ToString());
// LogFile.WriteLine("Message: " + ex.Message);
// if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
// }
// try
// {
// var bemerkungenList = await Reader.CreateBemerkungenList();
// if (bemerkungenList != null && Bemerkungen != null)
// {
// if (!Enumerable.SequenceEqual(bemerkungenList, Bemerkungen))
// {
// if (checkForChange)
// {
// //zuweisungenList.OrderBy(p => p.PersNummer);
// //Zuweisungen.OrderBy(p => p.PersNummer);
// var items = bemerkungenList.Except(Bemerkungen);
// foreach (var item in items)
// {
// if (UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// {
// string z = "";
// if (Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// z = string.IsNullOrEmpty(Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung) ? " leer" : " " + Bemerkungen.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung;
// else
// z = " leer";
// string y = "";
// if (bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).Count() > 0)
// y = string.IsNullOrEmpty(bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung) ? " leer" : " " + bemerkungenList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().Bemerkung;
// else
// y = " leer";
// string x = "";
// x = UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath ?? "";
// if (x.CountSubstring("\n") > 6)
// {
// var i = x.CountSubstring("\n");
// x = x.Substring(0, x.IndexOf("\n")) + x.Substring(x.IndexOfNth("\n", i - 4));
// }
// var str = "";
// var sub = $"{x.Substring(x.IndexOf("\n") + 1).TrimStart("\n".ToCharArray())}";
// if (x.StartsWith("l, Zuweisung wurde geändert"))
// str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
// else if (x.StartsWith("l, Bemerkung wurde geändert"))
// str = "l, Bemerkung wurde geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
// else if (x.StartsWith("l, Bemerkung und Zuweisung wurden geändert"))
// str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
// else if (x.StartsWith("l, Zuweisung und Bemerkung wurden geändert"))
// str = "l, Zuweisung und Bemerkung wurden geändert\n\n" + $"{sub}\nBemerkung:{z} -> {y}";
// else
// str = $"l, Bemerkung wurde geändert\n\nBemerkung Alter Wert:{z} -> {y}";
// str = str.AddLineNumbers(2);
// UserList.Where(p => p.PersNummer == item.PersNummer && p.Datum == item.Datum).First().FilePath = str;
// }
// }
// }
// foreach (var user in UserList)
// {
// if (bemerkungenList != null)
// {
// if (PersonalNummerIsEnabled)
// {
// if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && bemerkungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
// UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Bemerkung = bemerkungenList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Bemerkung;
// }
// else
// {
// if (UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0 && bemerkungenList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0)
// UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Bemerkung = bemerkungenList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Bemerkung;
// }
// //flowDocu.ItemsSource = UserList;
// }
// }
// Bemerkungen = bemerkungenList;
// }
// }
// }
// catch (Exception ex)
// {
// LogFile.WriteLine(ex.ToString());
// LogFile.WriteLine("Message: " + ex.Message);
// if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
// }
// try
// {
// var telefonList = await Reader.CreateTelefonList();
// if (telefonList != null && TelefonList != null)
// {
// if (!Enumerable.SequenceEqual(telefonList, TelefonList))
// {
// foreach (var user in UserList)
// {
// if (telefonList != null)
// {
// if (PersonalNummerIsEnabled)
// {
// //if (UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0 && telefonList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).Count() > 0)
// //{
// // UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Telefon = telefonList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum).First().Telefon;
// // //UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
// //}
// if (UserList.Where(p => p.PersNummer == user.PersNummer).Count() > 0 && telefonList.Where(p => p.PersNummer == user.PersNummer).Count() > 0)
// {
// UserList.Where(p => p.PersNummer == user.PersNummer).First().Telefon = telefonList.Where(p => p.PersNummer == user.PersNummer).First().Telefon;
// //UserList.Where(p => p.PersNummer == user.PersNummer && p.Datum == user.Datum && p.FilePath == ".").First().FilePath = "●";
// }
// }
// else
// {
// if (UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0 && telefonList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).Count() > 0)
// UserList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Telefon = telefonList.Where(p => p.Name == user.Name && p.Vorname == user.Vorname && p.Datum == user.Datum).First().Telefon;
// }
// //flowDocu.ItemsSource = UserList;
// }
// }
// TelefonList = telefonList;
// }
// }
// }
// catch (Exception ex)
// {
// LogFile.WriteLine(ex.ToString());
// LogFile.WriteLine("Message: " + ex.Message);
// if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
// }
// });
// //if (!checkForChange) this.Width = flowDocu.ActualWidth + 20;
// //jsonTimer.Stop();
//}
private async void btnOpenFile_Click(object sender, RoutedEventArgs e)
{
//bar.Visibility = Visibility.Visible;
//li.IsActive = true;
li.Visibility = Visibility.Visible;
await Task.Run(() =>
{
ZuweisungsMoeglichkeiten = Reader.ReadZuweisungsMoeglichkeiten();
AbteilungsNamen = Reader.ReadAbteilungsNamen();
UserList = Reader.ReadUserList(true);
DefaultUserList = UserList;
});
var abtFilterList = DefaultUserList.Select(p => p.Abteilung).Distinct().ToList();
abtFilterList.Insert(0, "");
abtFilterList.Sort();
cBFilterAbteilung.ItemsSource = cBFilterAbteilung2.ItemsSource = cBFilterAbteilung3.ItemsSource = abtFilterList;
//flowDocu.ItemsSource = UserList;
btnFrueh.IsEnabled = true;
btnSpaet.IsEnabled = true;
btnNacht.IsEnabled = true;
//bar.Visibility = Visibility.Collapsed;
li.Visibility = Visibility.Collapsed;
//li.IsActive = false;
//jsonTimer.Start();
FileWatcher();
newVersionTimer.Start();
}
private async void ComboBox_DropDownClosed(object sender, EventArgs e)
{
li.Visibility = Visibility.Visible;
await Task.Delay(30);
try
{
var box = sender as ComboBox;
DataGridRow dataGridRow = FindParent(box);
int index = dataGridRow.GetIndex();
TextBlock persnummer = null;
var name = flowDocu.Columns[0].GetCellContent(flowDocu.Items[index]) as TextBlock;
var vorname = flowDocu.Columns[1].GetCellContent(flowDocu.Items[index]) as TextBlock;
var datum = flowDocu.Columns[2].GetCellContent(flowDocu.Items[index]) as TextBlock;
persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
var Zuweisungen = await Reader.CreateZuweisungenList();
if (Zuweisungen != null)
{
if (!Zuweisungen.Select(p => p.PersNummer).Contains(persnummer.Text))
{
if (cBzuweisungFullDataset.IsChecked.Value)
{
foreach (var user in DefaultUserList)
{
if (user.PersNummer == persnummer.Text)
{
Zuweisungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = user.Datum,
Zuweisung = box.SelectedItem == null ? "" : box.SelectedItem.ToString()
});
}
}
}
else
{
Zuweisungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Zuweisung = box.SelectedItem == null ? "" : box.SelectedItem.ToString()
});
}
}
else
{
if (Zuweisungen.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).Count() > 0 && box.SelectedItem != null)
{
if (cBzuweisungFullDataset.IsChecked.Value)
{
foreach (var user in Zuweisungen.Where(p => (p.PersNummer == persnummer.Text)))
{
Zuweisungen.Where(p => (p == user)).First().Zuweisung = box.SelectedItem.ToString();
}
}
else
Zuweisungen.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).First().Zuweisung = box.SelectedItem.ToString();
}
else
{
if (cBzuweisungFullDataset.IsChecked.Value)
{
foreach (var user in DefaultUserList)
{
if (user.PersNummer == persnummer.Text)
{
Zuweisungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = user.Datum,
Zuweisung = box.SelectedItem == null ? "" : box.SelectedItem.ToString()
});
}
}
}
else
{
Zuweisungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Zuweisung = box.SelectedItem == null ? "" : box.SelectedItem.ToString()
});
}
}
}
}
else Zuweisungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Zuweisung = box.SelectedItem == null ? "" : box.SelectedItem.ToString()
});
if (cBzuweisungFullDataset.IsChecked.Value)
{
if (box.SelectedItem != null)
{
foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
DefaultUserList.Where(p => (p == user)).First().Zuweisung = box.SelectedItem.ToString();
}
}
else
{
if (UserList.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).Count() > 0 && box.SelectedItem != null)
UserList.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).First().Zuweisung = box.SelectedItem.ToString();
}
var json = Newtonsoft.Json.JsonConvert.SerializeObject(Zuweisungen);
json = await Crypto.EncryptString(json);
byte[] jsonB = new UTF8Encoding(true).GetBytes(json);
using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json", FileMode.Open, FileAccess.Write, FileShare.None)) //FileShare.Read geändert 18.02.19
{
if (fs != null)
{
fs.SetLength(0);
await fs.WriteAsync(jsonB, 0, jsonB.Length);
}
else fs.Dispose();
}
li.Visibility = Visibility.Collapsed;
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
//li.Visibility = Visibility.Collapsed;
}
}
#region Bemerkung
List BemerkungenChanges = new List();
TextBox bemerkungTextbox = null;
//TextBox lastTextChangedTextbox = null;
private void Bemerkung_KeyDown(object sender, KeyEventArgs e)
{
try
{
var box = sender as TextBox;
if (!Helper.keyIsSpecialKey(e.Key))
{
if (box.Text.ToLower().Contains("krank")) MessageBox.Show("Bitte nicht \"Krank\" eintragen (Datenschutz)\nWenn möglich stattdessen Zuweisung auf \"nicht Anwesend\" stellen", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Exclamation);
e.Handled = false;
//lastTextChangedTextbox = box;
//Debug.WriteLine("NonSpecialKey");
bemerkungTextbox = box;
bemerkungTimer.Stop();
bemerkungTimer.Start();
DisableFilterChange();
}
else e.Handled = true;
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
private void Bemerkung_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
try
{
if (bemerkungTextbox != null)
{
DataGridRow dataGridRow = FindParent(bemerkungTextbox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
if (BemerkungenChanges.Where(p => p.sender == bemerkungTextbox).Count() == 0)
BemerkungenChanges.Add(new ChangesQueue.BemerkungenChanges() { sender = bemerkungTextbox, index = index });
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
private void BemerkungTimer_Tick(object sender, EventArgs e)
{
try
{
var bembox = bemerkungTextbox;
if (bembox != null)
{
DataGridRow dataGridRow = FindParent(bembox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
if (BemerkungenChanges.Where(p => p.sender == bembox).Count() == 0)
BemerkungenChanges.Add(new ChangesQueue.BemerkungenChanges() { sender = bembox, index = index });
}
}
//BemerkungIsEnabled = false;
SaveBemerkung(BemerkungenChanges);
bemerkungTimer.Stop();
EnableFilterChange();
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
private async void SaveBemerkung(List bemerkungenChanges)
{
var Bemerkungen = await Reader.CreateBemerkungenList();
foreach (var change in bemerkungenChanges)
{
try
{
var box = change.sender as TextBox;
int index = change.index;
TextBlock persnummer = null;
var name = flowDocu.Columns[0].GetCellContent(flowDocu.Items[index]) as TextBlock;
var vorname = flowDocu.Columns[1].GetCellContent(flowDocu.Items[index]) as TextBlock;
var datum = flowDocu.Columns[2].GetCellContent(flowDocu.Items[index]) as TextBlock;
persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
if (Bemerkungen != null && persnummer != null)
{
if (!Bemerkungen.Select(p => p.PersNummer).Contains(persnummer.Text))
{
Bemerkungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Bemerkung = box.Text == null ? "" : box.Text.ToString()
});
}
else
{
if (Bemerkungen.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).Count() > 0 && box != null)
Bemerkungen.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).First().Bemerkung = box.Text.ToString();
else
Bemerkungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Bemerkung = box == null ? "" : box.Text.ToString()
});
}
}
else Bemerkungen.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Bemerkung = box.Text == null ? "" : box.Text.ToString()
});
if (UserList.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).Count() > 0 && box != null)
UserList.Where(p => (p.PersNummer == persnummer.Text && p.Datum == DateTime.Parse(datum.Text))).First().Bemerkung = box.Text.ToString();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
MessageBox.Show("Bemerkung konnte nicht gespeichert werden\nBitte die Bemerkung neu eingeben", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Warning);
CreateList();
BemerkungIsEnabled = true;
}
}
try
{
var json = Newtonsoft.Json.JsonConvert.SerializeObject(Bemerkungen);
json = await Crypto.EncryptString(json);
byte[] jsonB = new UTF8Encoding(true).GetBytes(json);
using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json", FileMode.Create, FileAccess.Write, FileShare.None)) //Test 25.07.19 FileShare.ReadWrite | FileShare.Delete
{
await fs.WriteAsync(jsonB, 0, jsonB.Length);
}
BemerkungenChanges.Clear();
//box.CaretIndex = box.Text.Length;
BemerkungIsEnabled = true;
//lastTextChangedTextbox = null;
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
MessageBox.Show("Bemerkung konnte nicht gespeichert werden\nBitte die Bemerkung neu eingeben", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Warning);
CreateList();
BemerkungIsEnabled = true;
}
}
private void Bemerkung_GotFocus(object sender, RoutedEventArgs e)
{
var row = sender as TextBox;
//DataGridRow dataGridRow = FindParent(row);
DataGridCell dataGridCell = FindParent(row);
row.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
//dataGridRow.Height = 55;
dataGridCell.Height = 55;
row.Height = 50;
}
private void Bemerkung_LostFocus(object sender, RoutedEventArgs e)
{
var row = sender as TextBox;
//DataGridRow dataGridRow = FindParent(row);
DataGridCell dataGridCell = FindParent(row);
row.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
//dataGridRow.Height = 30;
if(dataGridCell != null) dataGridCell.Height = 30;
row.Height = 30;
//bemerkungTimer.Interval = TimeSpan.FromSeconds(1.5);
}
//private void Bemerkung_MouseLeave(object sender, MouseEventArgs e)
//{
// bemerkungTextbox = sender as TextBox;
// if (bemerkungTextbox.IsKeyboardFocused && lastTextChangedTextbox == bemerkungTextbox && bemerkungTimer.IsEnabled)
// {
// bemerkungTimer.Stop();
// SaveBemerkung(bemerkungTextbox);
// EnableFilterChange();
// }
// //if ((sender as TextBox).IsMouseOver == false && (sender as TextBox).IsKeyboardFocused)
// // bemerkungTimer.Interval = TimeSpan.FromSeconds(0.5);
//}
//private void Bemerkung_MouseEnter(object sender, MouseEventArgs e)
//{
// //if ((sender as TextBox).IsMouseOver == true && (sender as TextBox).IsKeyboardFocused)
// // bemerkungTimer.Interval = TimeSpan.FromSeconds(1.5);
//}
private void DisableFilterChange()
{
btnFrueh.IsEnabled = false;
btnSpaet.IsEnabled = false;
btnNacht.IsEnabled = false;
cBFrueh.IsEnabled = false;
cBSpaet.IsEnabled = false;
cBNacht.IsEnabled = false;
btnAllDays.IsEnabled = false;
btnDatePickerToday.IsEnabled = false;
dPDatum.IsEnabled = false;
btnSearch.IsEnabled = false;
btnMinusDay.IsEnabled = false;
btnPlusDay.IsEnabled = false;
}
private void EnableFilterChange()
{
btnFrueh.IsEnabled = true;
btnSpaet.IsEnabled = true;
btnNacht.IsEnabled = true;
cBFrueh.IsEnabled = true;
cBSpaet.IsEnabled = true;
cBNacht.IsEnabled = true;
btnAllDays.IsEnabled = true;
btnDatePickerToday.IsEnabled = true;
dPDatum.IsEnabled = true;
btnSearch.IsEnabled = true;
btnMinusDay.IsEnabled = true;
btnPlusDay.IsEnabled = true;
}
#endregion
#region Telefon
List TelefonChanges = new List();
TextBox telefonTextbox = null;
//TextBox lastTextChangedTelbox = null;
private void Telefon_KeyDown(object sender, KeyEventArgs e)
{
if (Helper.isTelNumber(e.Key))
{
//lastTextChangedTelbox = sender as TextBox;
//Debug.WriteLine("NonSpecialKey");
e.Handled = false;
telefonTextbox = sender as TextBox;
telefonTimer.Stop();
telefonTimer.Start();
DisableFilterChange();
}
else e.Handled = true;
}
private void TelefonTimer_Tick(object sender, EventArgs e)
{
if (telefonTextbox != null)
{
DataGridRow dataGridRow = FindParent(telefonTextbox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
var persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
DefaultUserList.Where(p => (p.PersNummer == user.PersNummer && p.Datum == user.Datum)).First().Telefon = telefonTextbox.Text.ToString();
if (TelefonChanges.Where(p => p.sender == telefonTextbox).Count() == 0)
TelefonChanges.Add(new ChangesQueue.TelefonChanges() { sender = telefonTextbox, index = index });
}
}
TelefonIsEnabled = false;
SaveTelefon(TelefonChanges);
//SaveTelefon(telefonTextbox);
telefonTimer.Stop();
EnableFilterChange();
}
private void Telefon_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
Debug.WriteLine("jo");
var telbox = sender as TextBox;
if (telbox != null)
{
DataGridRow dataGridRow = FindParent(telbox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
var persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
DefaultUserList.Where(p => (p.PersNummer == user.PersNummer && p.Datum == user.Datum)).First().Telefon = telbox.Text.ToString();
if (TelefonChanges.Where(p => p.sender == telbox).Count() == 0)
TelefonChanges.Add(new ChangesQueue.TelefonChanges() { sender = telbox, index = index });
}
}
}
private async void SaveTelefon(List telefonChanges)
{
TelefonList = await Reader.CreateTelefonList();
foreach (var change in telefonChanges)
{
try
{
var telbox = change.sender as TextBox;
var index = change.index;
TextBlock persnummer = null;
var name = flowDocu.Columns[0].GetCellContent(flowDocu.Items[index]) as TextBlock;
var vorname = flowDocu.Columns[1].GetCellContent(flowDocu.Items[index]) as TextBlock;
var datum = flowDocu.Columns[2].GetCellContent(flowDocu.Items[index]) as TextBlock;
persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
if (string.IsNullOrEmpty(telbox.Text) || string.IsNullOrWhiteSpace(telbox.Text))
TelefonList.RemoveAll(p => p.PersNummer == persnummer.Text);
else
{
if (TelefonList != null && persnummer.Text != null)
{
if (!TelefonList.Select(p => p.PersNummer).Contains(persnummer.Text))
{
foreach (var user in DefaultUserList.Where(p => p.PersNummer == persnummer.Text))
{
TelefonList.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Telefon = telbox.Text == null ? "" : telbox.Text.ToString()
});
}
}
else
{
if (TelefonList.Where(p => (p.PersNummer == persnummer.Text)).Count() > 0 && telbox != null)
{
foreach (var user in TelefonList.Where(p => (p.PersNummer == persnummer.Text)))
{
var t = TelefonList.Where(p => (p.PersNummer == persnummer.Text && p.Telefon != telbox.Text.ToString())).FirstOrDefault();
if (t != null) t.Telefon = telbox.Text.ToString();
}
}
else
{
foreach (var user in DefaultUserList.Where(p => p.PersNummer == persnummer.Text))
{
TelefonList.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Telefon = telbox == null ? "" : telbox.Text.ToString()
});
}
}
}
}
else TelefonList.Add(new TableInfo()
{
PersNummer = persnummer.Text ?? "",
Name = name.Text,
Vorname = vorname.Text,
Datum = DateTime.Parse(datum.Text),
Telefon = telbox.Text == null ? "" : telbox.Text.ToString()
});
}
//foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
// DefaultUserList.Where(p => (p.PersNummer == user.PersNummer && p.Datum == user.Datum)).First().Telefon = telbox.Text.ToString();
//lastTextChangedTelbox = null;
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
MessageBox.Show("Telefon konnte nicht gespeichert werden\nBitte die Nummer neu eingeben", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Warning);
CreateList();
//TelefonIsEnabled = true;
}
}
try
{
var json = Newtonsoft.Json.JsonConvert.SerializeObject(TelefonList);
json = await Crypto.EncryptString(json);
byte[] jsonT = new UTF8Encoding(true).GetBytes(json);
using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json", FileMode.Create, FileAccess.Write, FileShare.None))//ReadWrite | FileShare.Delete
{
await fs.WriteAsync(jsonT, 0, jsonT.Length);
}
TelefonChanges.Clear();
//telbox.CaretIndex = telbox.Text.Length;
//TelefonIsEnabled = true;
}
catch (Exception)
{
throw;
}
}
#endregion
#region Filter
string abtFilter = "";
string abtFilter2 = "";
string abtFilter3 = "";
private async void cBFilterAbteilung_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
abtFilter = cBFilterAbteilung.SelectedItem == null ? "" : cBFilterAbteilung.SelectedItem.ToString();
CreateList();
if (cBFilterAbteilung.SelectedItem != null && cBFilterAbteilung.SelectedItem.ToString() != "") cBFilterAbteilung2.IsEnabled = true;
else if (cBFilterAbteilung.SelectedItem == null || cBFilterAbteilung.SelectedItem.ToString() == "")
{
cBFilterAbteilung2.IsEnabled = cBFilterAbteilung3.IsEnabled = false;
cBFilterAbteilung2.SelectedIndex = cBFilterAbteilung3.SelectedIndex = 0;
}
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private async void cBFilterAbteilung2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
abtFilter = cBFilterAbteilung.SelectedItem == null ? "" : cBFilterAbteilung.SelectedItem.ToString();
abtFilter2 = cBFilterAbteilung2.SelectedItem == null ? "" : cBFilterAbteilung2.SelectedItem.ToString();
CreateList();
if (cBFilterAbteilung2.SelectedItem != null && cBFilterAbteilung2.SelectedItem.ToString() != "") cBFilterAbteilung3.IsEnabled = true;
else if (cBFilterAbteilung2.SelectedItem == null || cBFilterAbteilung2.SelectedItem.ToString() == "")
{
cBFilterAbteilung3.IsEnabled = false;
cBFilterAbteilung3.SelectedIndex = 0;
}
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private async void cBFilterAbteilung3_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
abtFilter = cBFilterAbteilung.SelectedItem == null ? "" : cBFilterAbteilung.SelectedItem.ToString();
abtFilter2 = cBFilterAbteilung2.SelectedItem == null ? "" : cBFilterAbteilung2.SelectedItem.ToString();
abtFilter3 = cBFilterAbteilung3.SelectedItem == null ? "" : cBFilterAbteilung3.SelectedItem.ToString();
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
string lastButton = "";
private async void btnFrueh_Click(object sender, RoutedEventArgs e)
{
try
{
lastButton = "MT;MF";
uncheck_Boxes();
btnFrueh.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989"));
btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private async void btnSpaet_Click(object sender, RoutedEventArgs e)
{
try
{
lastButton = "MS";
uncheck_Boxes();
btnFrueh.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989"));
btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private async void btnNacht_Click(object sender, RoutedEventArgs e)
{
try
{
lastButton = "MN";
uncheck_Boxes();
btnFrueh.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void cBFrueh_Checked(object sender, RoutedEventArgs e)
{
try
{
if (((lastButton == "MS" || lastButton == "MN") && !cBSpaet.IsChecked.Value && !cBNacht.IsChecked.Value)) lastButton = "";
if (!lastButton.Contains("MT;MF")) lastButton = lastButton + ";MT;MF";
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnFrueh.Background = cBFrueh.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnSpaet.Background = cBSpaet.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnNacht.Background = cBNacht.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void cBSpaet_Checked(object sender, RoutedEventArgs e)
{
try
{
if (((lastButton == "MT;MF" || lastButton == "MN") && !cBFrueh.IsChecked.Value && !cBNacht.IsChecked.Value)) lastButton = "";
if (!lastButton.Contains("MS")) lastButton = lastButton + ";MS";
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnFrueh.Background = cBFrueh.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnSpaet.Background = cBSpaet.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnNacht.Background = cBNacht.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void cBNacht_Checked(object sender, RoutedEventArgs e)
{
try
{
if (((lastButton == "MT;MF" || lastButton == "MS") && !cBSpaet.IsChecked.Value && !cBFrueh.IsChecked.Value)) lastButton = "";
if (!lastButton.Contains("MN")) lastButton = lastButton + ";MN";
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnFrueh.Background = cBFrueh.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnSpaet.Background = cBSpaet.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
btnNacht.Background = cBNacht.IsChecked.Value ? (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")) : (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void cBFrueh_Unchecked(object sender, RoutedEventArgs e)
{
lastButton = lastButton.Replace("MT;MF", "");
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnFrueh.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
private void cBSpaet_Unchecked(object sender, RoutedEventArgs e)
{
lastButton = lastButton.Replace("MS", "");
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
private void cBNacht_Unchecked(object sender, RoutedEventArgs e)
{
lastButton = lastButton.Replace("MN", "");
lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';');
btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD"));
CreateList();
}
private void uncheck_Boxes()
{
cBFrueh.Unchecked -= cBFrueh_Unchecked;
cBSpaet.Unchecked -= cBSpaet_Unchecked;
cBNacht.Unchecked -= cBNacht_Unchecked;
cBFrueh.IsChecked = false;
cBSpaet.IsChecked = false;
cBNacht.IsChecked = false;
cBFrueh.Unchecked += cBFrueh_Unchecked;
cBSpaet.Unchecked += cBSpaet_Unchecked;
cBNacht.Unchecked += cBNacht_Unchecked;
}
private async void tbSearch_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
btnSearch.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
try
{
CreateList(tbSearch.Text, true, cBSearchWithFilters.IsChecked.Value);
tbSearch.Text = "";
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void dPDatum_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
try
{
CreateList();
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
private void btnDatePickerToday_Click(object sender, RoutedEventArgs e)
{
dPDatum.SelectedDate = DateTime.Now.Date;
}
private void btnAllDays_Click(object sender, RoutedEventArgs e)
{
dPDatum.SelectedDate = null;
}
private void BtnMinusDay_Click(object sender, RoutedEventArgs e)
{
if (dPDatum.SelectedDate != null)
dPDatum.SelectedDate = dPDatum.SelectedDate - TimeSpan.FromDays(1);
else
dPDatum.SelectedDate = DateTime.Now.Date;
}
private void BtnPlusDay_Click(object sender, RoutedEventArgs e)
{
if (dPDatum.SelectedDate != null)
dPDatum.SelectedDate = dPDatum.SelectedDate + TimeSpan.FromDays(1);
else
dPDatum.SelectedDate = DateTime.Now.Date + TimeSpan.FromDays(1);
}
#endregion
#region Print and Export
private async void btnPrint_Click(object sender, RoutedEventArgs e)
{
propertyChangeAllowed = false;
Print print = new Print();
bar.IsIndeterminate = true;
bar.Visibility = Visibility.Visible;
List printList = new List();
printList = userList;
DataGrid grid = new DataGrid();
grid = print.CreatePrintGrid(printList);
if (printList.Count > 100) lblBar.Visibility = Visibility.Visible;
string listTitle = "";
switch (lastButton)
{
case "MT;MF":
listTitle = " für Früh- / Tagschicht";
break;
case "MS":
listTitle = " für Spätschicht";
break;
case "MN":
listTitle = " für Nachtschicht";
break;
default:
listTitle = "";
break;
}
print.printDG(grid, "Personaleinsatzplanung" + listTitle);
bar.Visibility = Visibility.Collapsed;
lblBar.Visibility = Visibility.Collapsed;
//PrintDialog pd = new PrintDialog();
//print.PrintDataGrid(null, grid, null, pd);
propertyChangeAllowed = true;
}
private void btnExport_Click(object sender, RoutedEventArgs e)
{
Export.ExportCSV(UserList);
}
private Visibility barVisibility;
public Visibility BarVisibility
{
get { return barVisibility; }
set
{
barVisibility = value;
bar.Visibility = value;
}
}
private bool barIsIndeterminate;
public bool BarIsIndeterminate
{
get { return barIsIndeterminate; }
set
{
barIsIndeterminate = value;
bar.IsIndeterminate = value;
}
}
private double barMax;
public double BarMax
{
get { return barMax; }
set
{
barMax = value;
bar.Maximum = value;
}
}
private double barValue;
public double BarValue
{
get { return barValue; }
set
{
barValue = value;
bar.Value = value;
}
}
#endregion
#region LastChange Funktionen
private void flowDocu_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.IsMouseOver && this.IsKeyboardFocusWithin)
{
int selectedRow = flowDocu.SelectedIndex;
if (selectedRow >= 0)
{
DispatcherTimer ChangeTimer = new DispatcherTimer();
ChangeTimer.Interval = TimeSpan.FromSeconds(3);
ChangeTimer.Tick += (s, ev) => { ChangeTimer_Tick(sender, e, selectedRow, selectedRow, ChangeTimer); };
ChangeTimer.Start();
}
}
}
int lastVisibleFirstRow;
void DataGrid_ScrollChanged(object sender, RoutedEventArgs e)
{
var scroll = Helper.FindVisualChild((DependencyObject)sender);
int firstRow = (int)scroll.VerticalOffset;
int lastRow = (int)scroll.VerticalOffset + (int)scroll.ViewportHeight - 1;
if (firstRow != lastVisibleFirstRow)
{
lastVisibleFirstRow = firstRow;
DispatcherTimer ChangeTimer = new DispatcherTimer();
ChangeTimer.Interval = TimeSpan.FromSeconds(10);
ChangeTimer.Tick += (s, ev) => { ChangeTimer_Tick(sender, e, firstRow, lastRow, ChangeTimer); };
ChangeTimer.Start();
}
}
private void ChangeTimer_Tick(object sender, EventArgs e, int firstRow, int lastRow, DispatcherTimer timer)
{
try
{
for (var i = firstRow; i <= lastRow; i++)
{
DataGridRow dataGridRow = flowDocu.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
var change = flowDocu.Columns[11].GetCellContent(flowDocu.Items[index]) as TextBlock;
if (!string.IsNullOrEmpty(change.Text))
{
var datum = flowDocu.Columns[2].GetCellContent(flowDocu.Items[index]) as TextBlock;
var pers = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
if (UserList.Where(p => (p.PersNummer == pers.Text && p.Datum == DateTime.Parse(datum.Text) && p.FilePath != "")).Count() > 0)
UserList.Where(p => (p.PersNummer == pers.Text && p.Datum == DateTime.Parse(datum.Text))).First().FilePath = "";
}
}
}
if (UserList != null)
{
//Debug.WriteLine(UserList.Where(p => !string.IsNullOrEmpty(p.FilePath)).Count());
if (UserList.Where(p => !string.IsNullOrEmpty(p.FilePath)).Count() <= 0) lblLastChange.Foreground = new SolidColorBrush(Colors.Black);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
timer.Stop();
}
#endregion
private async void CreateList(string search = "", bool isSearch = false, bool searchWithFilter = false)
{
try
{
var date = dPDatum.SelectedDate.HasValue ? dPDatum.SelectedDate.ToString() : "";
var newList = await Task.Run(() => TableCreator.CreateList(DefaultUserList, abtFilter, abtFilter2, abtFilter3, lastButton, date, search, searchWithFilter, isSearch));
if (newList != null) UserList = newList;
//flowDocu.ItemsSource = UserList;
}
catch (Exception ex)
{
LogFile.WriteLine(ex.ToString());
LogFile.WriteLine("Message: " + ex.Message);
LogFile.WriteLine("UserList: " + UserList.Count + " Items");
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
}
}
#region Extensions
public static Parent FindParent(DependencyObject child)
where Parent : DependencyObject
{
DependencyObject parentObject = child;
//We are not dealing with Visual, so either we need to fnd parent or
//get Visual to get parent from Parent Heirarchy.
while (!((parentObject is System.Windows.Media.Visual)
|| (parentObject is System.Windows.Media.Media3D.Visual3D)))
{
if (parentObject is Parent || parentObject == null)
{
return parentObject as Parent;
}
else
{
parentObject = (parentObject as FrameworkContentElement).Parent;
}
}
//We have not found parent yet , and we have now visual to work with.
parentObject = VisualTreeHelper.GetParent(parentObject);
//check if the parent matches the type we're looking for
if (parentObject is Parent || parentObject == null)
{
return parentObject as Parent;
}
else
{
//use recursion to proceed with next level
return FindParent(parentObject);
}
}
public ScrollViewer GetScrollViewer(UIElement element)
{
//Dispatcher.BeginInvoke(new Action(() => {
if (element == null) return null;
ScrollViewer retour = null;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element) && retour == null; i++)
{
if (VisualTreeHelper.GetChild(element, i) is ScrollViewer)
{
retour = (ScrollViewer)(VisualTreeHelper.GetChild(element, i));
}
else
{
retour = GetScrollViewer(VisualTreeHelper.GetChild(element, i) as UIElement);
}
}
return retour;
//}));
}
#endregion
#region Settings
private void btnSettings_Click(object sender, RoutedEventArgs e)
{
tBAbtTranslatePath.Text = Properties.Settings.Default.AbteilungsnamenPath;
tBLicenseFilePath.Text = Properties.Settings.Default.LizenzenPath;
tBZuweisungenPath.Text = Properties.Settings.Default.ZuweisungenPath;
gridSettings.Visibility = Visibility.Visible;
canvasSettings.Visibility = Visibility.Visible;
gridToolbar.Visibility = Visibility.Collapsed;
gridTable.Visibility = Visibility.Collapsed;
}
private void btnCloseSettings_Click(object sender, RoutedEventArgs e)
{
canvasSettings.Visibility = Visibility.Collapsed;
gridSettings.Visibility = Visibility.Collapsed;
gridToolbar.Visibility = Visibility.Visible;
gridTable.Visibility = Visibility.Visible;
Properties.Settings.Default.AbteilungsnamenPath = tBAbtTranslatePath.Text;
Properties.Settings.Default.LizenzenPath = tBLicenseFilePath.Text;
Properties.Settings.Default.ZuweisungenPath = tBZuweisungenPath.Text;
Properties.Settings.Default.Save();
}
private void btnCancelSettings_Click(object sender, RoutedEventArgs e)
{
canvasSettings.Visibility = Visibility.Collapsed;
gridSettings.Visibility = Visibility.Collapsed;
gridToolbar.Visibility = Visibility.Visible;
gridTable.Visibility = Visibility.Visible;
}
private void btnSelectLicenseFile_Click(object sender, RoutedEventArgs e)
{
var p = Reader.OpenFile("Lizenzen");
var lines = System.IO.File.ReadAllLines(p);
if (lines[0].StartsWith("Name;") || lines[0].StartsWith("Personalnummer;0001")) tBLicenseFilePath.Text = p;
else
{
var x = MessageBox.Show("Keine gültige Lizenzdatei ausgewählt!", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Exclamation, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification);
btnSelectLicenseFile.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
private void btnSelectAbtTranslateFile_Click(object sender, RoutedEventArgs e)
{
var p = Reader.OpenFile("Abteilungsnamen");
var lines = System.IO.File.ReadAllLines(p);
if (lines[0].StartsWith("Abteilung;")) tBAbtTranslatePath.Text = p;
else
{
var x = MessageBox.Show("Keine gültige Abteilungsliste ausgewählt!", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Exclamation, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification);
btnSelectAbtTranslateFile.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
private void btnSelectZuweisungenFile_Click(object sender, RoutedEventArgs e)
{
var p = Reader.OpenFile("Zuweisungen");
var lines = System.IO.File.ReadAllLines(p);
if (!lines.Contains(";")) tBZuweisungenPath.Text = p;
else
{
var x = MessageBox.Show("Keine gültige Zuweisungen-Liste ausgewählt!", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Exclamation, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification);
btnSelectZuweisungenFile.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
private void btnImpressum_Click(object sender, RoutedEventArgs e)
{
canvasImpressum.Visibility = Visibility.Visible;
}
private void btnCloseImpressum_Click(object sender, RoutedEventArgs e)
{
canvasImpressum.Visibility = Visibility.Collapsed;
}
private void btnVersionInfo_Click(object sender, RoutedEventArgs e)
{
canvasVersionInfo.Visibility = Visibility.Visible;
}
private void btnCloseVersionInfo_Click(object sender, RoutedEventArgs e)
{
canvasVersionInfo.Visibility = Visibility.Collapsed;
}
#endregion
private void Window_Deactivated(object sender, EventArgs e)
{
Debug.WriteLine("jo2");
var telbox = telefonTextbox;
if (telbox != null)
{
DataGridRow dataGridRow = FindParent(telbox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
var persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
DefaultUserList.Where(p => (p.PersNummer == user.PersNummer && p.Datum == user.Datum)).First().Telefon = telbox.Text.ToString();
if (TelefonChanges.Where(p => p.sender == telbox).Count() == 0)
TelefonChanges.Add(new ChangesQueue.TelefonChanges() { sender = telbox, index = index });
}
}
var bembox = bemerkungTextbox;
try
{
if (bembox != null)
{
DataGridRow dataGridRow = FindParent(bembox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
if (BemerkungenChanges.Where(p => p.sender == bembox).Count() == 0)
BemerkungenChanges.Add(new ChangesQueue.BemerkungenChanges() { sender = bembox, index = index });
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
private void btnHideToolbar_Click(object sender, RoutedEventArgs e)
{
if (gridToolbar.Height == 184)
{
gridToolbar.Height = 14;
btnHideToolbar.Content = "˅˅";
flowDocu.Height = ActualHeight + 170;
btnHideToolbar.ToolTip = "Toolbar öffnen";
}
else
{
gridToolbar.Height = 184;
btnHideToolbar.Content = "^^";
flowDocu.Height = ActualHeight - 170;
btnHideToolbar.ToolTip = "Toolbar schließen";
}
gridTable.Height = main.ActualHeight - gridToolbar.Height - 40;
flowDocu.Height = gridTable.Height;
}
bool onStartup = false;
private async void Window_Closing(object sender, CancelEventArgs e)
{
await Tracker.SaveTrack(false);
await Task.Delay(1000);
var telbox = telefonTextbox;
if (telbox != null)
{
DataGridRow dataGridRow = FindParent(telbox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
var persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock;
foreach (var user in DefaultUserList.Where(p => (p.PersNummer == persnummer.Text)))
DefaultUserList.Where(p => (p.PersNummer == user.PersNummer && p.Datum == user.Datum)).First().Telefon = telbox.Text.ToString();
if (TelefonChanges.Where(p => p.sender == telbox).Count() == 0)
TelefonChanges.Add(new ChangesQueue.TelefonChanges() { sender = telbox, index = index });
}
}
var bembox = bemerkungTextbox;
if (bembox != null)
{
DataGridRow dataGridRow = FindParent(bembox);
if (dataGridRow != null)
{
int index = dataGridRow.GetIndex();
if (BemerkungenChanges.Where(p => p.sender == bembox).Count() == 0)
BemerkungenChanges.Add(new ChangesQueue.BemerkungenChanges() { sender = bembox, index = index });
}
}
if (TelefonChanges.Count > 0)
SaveTelefon(TelefonChanges);
if (BemerkungenChanges.Count > 0)
SaveBemerkung(BemerkungenChanges);
if (!onStartup) Application.Current.Shutdown();
}
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
gridTable.Height = main.ActualHeight - gridToolbar.Height - 40;
flowDocu.Height = gridTable.Height;
}
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var scroll = Helper.FindVisualChild((DependencyObject)sender);
int firstRow = (int)scroll.VerticalOffset;
int lastRow = (int)scroll.VerticalOffset + (int)scroll.ViewportHeight - 1;
if (firstRow != lastVisibleFirstRow)
{
lastVisibleFirstRow = firstRow;
DispatcherTimer ChangeTimer = new DispatcherTimer();
ChangeTimer.Interval = TimeSpan.FromSeconds(10);
ChangeTimer.Tick += (s, ev) => { ChangeTimer_Tick(sender, e, firstRow, lastRow, ChangeTimer); };
ChangeTimer.Start();
}
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var combo = sender as ComboBox;
combo.SelectedIndex = 0;
}
private static void GetDesktopShortcuts()
{
if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UpdatePEP.bat") || File.GetLastWriteTime(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UpdatePEP.bat") != File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\UpdatePEP.bat"))
{
File.Copy(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\UpdatePEP.bat", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UpdatePEP.bat", true);
GetDesktopShortcuts();
}
else
{
if (File.GetLastWriteTime(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\PEP-Tool.exe") < File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\PEP-Tool.exe"))
{
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UpdatePEP.bat");
Application.Current.Shutdown();
}
}
foreach (var link in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)))
{
if (System.IO.Path.GetExtension(link) == ".lnk")
{
var target = ResolveShortcut(link);
if (target.EndsWith("AV-Tool.exe"))
{
ChangeShortcutTarget(link);
}
}
}
}
static string ResolveShortcut(string filePath)
{
// IWshRuntimeLibrary is in the COM library "Windows Script Host Object Model"
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
try
{
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(filePath);
return shortcut.TargetPath;
}
catch (System.Runtime.InteropServices.COMException)
{
// A COMException is thrown if the file is not a valid shortcut (.lnk) file
return null;
}
}
[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
static void ChangeShortcutTarget(string filePath)
{
File.Delete(filePath);
//// IWshRuntimeLibrary is in the COM library "Windows Script Host Object Model"
//IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
//try
//{
// IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(filePath);
// shortcut.TargetPath = shortcut.TargetPath.Replace("AV-Tool.exe", "PEP-Tool.exe");
// shortcut.Save();
// File.Move(filePath, filePath.Substring(0, filePath.LastIndexOf("\\")) + "\\PEP-Tool.lnk");
// SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
//}
//catch (System.Runtime.InteropServices.COMException ex)
//{
// // A COMException is thrown if the file is not a valid shortcut (.lnk) file
// LogFile.WriteLine(ex);
//}
}
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
Debug.WriteLine("PropertyChanged " + propertyName);
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}