From 3b35dd0891e07b9cad0bbbc19956199b6162c3fc Mon Sep 17 00:00:00 2001 From: Marcus Bachler Date: Thu, 21 Nov 2019 08:32:45 +0100 Subject: [PATCH] KT erweiterung --- AV-ToolV3/App.config | 47 +- AV-ToolV3/App.xaml | 32 +- AV-ToolV3/ChangesQueue.cs | 23 - AV-ToolV3/Crypto.cs | 76 - AV-ToolV3/Export.cs | 42 +- AV-ToolV3/FodyWeavers.xml | 2 +- AV-ToolV3/FodyWeavers.xsd | 111 ++ AV-ToolV3/Helper.cs | 38 +- AV-ToolV3/KTOverview.xaml | 220 +++ AV-ToolV3/KTOverview.xaml.cs | 97 + AV-ToolV3/LogFile.cs | 41 +- AV-ToolV3/MainWindow.xaml | 103 +- AV-ToolV3/MainWindow.xaml.cs | 1714 +++-------------- .../{PEP_Tool.csproj => PEP_Tool_SQL.csproj} | 71 +- AV-ToolV3/Print.cs | 63 +- AV-ToolV3/Properties/Settings.Designer.cs | 34 +- AV-ToolV3/Properties/Settings.settings | 25 +- AV-ToolV3/Reader.cs | 740 +------ AV-ToolV3/SQL.cs | 204 +- AV-ToolV3/Schaltzustand.cs | 14 + AV-ToolV3/TableCreater.cs | 96 + AV-ToolV3/TableCreator.cs | 82 - AV-ToolV3/TableInfo.cs | 12 + AV-ToolV3/Tracker.cs | 53 +- AV-ToolV3/Writer.cs | 108 +- AV-ToolV3/Zugzuweisung.xaml | 153 ++ AV-ToolV3/Zugzuweisung.xaml.cs | 372 ++++ AV-ToolV3/packages.config | 15 +- ...ToolProject.sln => PEP_ToolProject_SQL.sln | 2 +- 29 files changed, 1920 insertions(+), 2670 deletions(-) delete mode 100644 AV-ToolV3/ChangesQueue.cs delete mode 100644 AV-ToolV3/Crypto.cs create mode 100644 AV-ToolV3/FodyWeavers.xsd create mode 100644 AV-ToolV3/KTOverview.xaml create mode 100644 AV-ToolV3/KTOverview.xaml.cs rename AV-ToolV3/{PEP_Tool.csproj => PEP_Tool_SQL.csproj} (69%) create mode 100644 AV-ToolV3/Schaltzustand.cs create mode 100644 AV-ToolV3/TableCreater.cs delete mode 100644 AV-ToolV3/TableCreator.cs create mode 100644 AV-ToolV3/Zugzuweisung.xaml create mode 100644 AV-ToolV3/Zugzuweisung.xaml.cs rename PEP_ToolProject.sln => PEP_ToolProject_SQL.sln (87%) diff --git a/AV-ToolV3/App.config b/AV-ToolV3/App.config index 8d4fccb..42f27fb 100644 --- a/AV-ToolV3/App.config +++ b/AV-ToolV3/App.config @@ -9,7 +9,7 @@ - + @@ -25,9 +25,6 @@ - - - @@ -41,7 +38,7 @@ 1.0 - 2.0.4 + 3.0.1 0 @@ -59,40 +56,48 @@ 1323 - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - - - - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/AV-ToolV3/App.xaml b/AV-ToolV3/App.xaml index e1cd521..e5608fb 100644 --- a/AV-ToolV3/App.xaml +++ b/AV-ToolV3/App.xaml @@ -36,7 +36,37 @@ --> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AV-ToolV3/ChangesQueue.cs b/AV-ToolV3/ChangesQueue.cs deleted file mode 100644 index 2502e50..0000000 --- a/AV-ToolV3/ChangesQueue.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PEP_Tool -{ - public class ChangesQueue - { - public class BemerkungenChanges - { - public object sender { get; set; } - public int index { get; set; } - } - - public class TelefonChanges - { - public object sender { get; set; } - public int index { get; set; } - } - } -} diff --git a/AV-ToolV3/Crypto.cs b/AV-ToolV3/Crypto.cs deleted file mode 100644 index fe700eb..0000000 --- a/AV-ToolV3/Crypto.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace PEP_Tool -{ - public static class Crypto - { - static string CryptoString = @"]VQr$gOKG_19m~p:9y0+DD{6?hL}##l_'^?M)>}OI&EIC~8thwY7YG<\d2[NdKA"; - - public static async Task EncryptString(string Message) - { - await Task.Delay(100); - byte[] Results = null; - System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); - MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); - byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(CryptoString)); - TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); - TDESAlgorithm.Key = TDESKey; - TDESAlgorithm.Mode = CipherMode.ECB; - TDESAlgorithm.Padding = PaddingMode.PKCS7; - byte[] DataToEncrypt = UTF8.GetBytes(Message); - try - { - ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor(); - Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length); - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine(ex); - } - finally - { - TDESAlgorithm.Clear(); - HashProvider.Clear(); - - } - - return Convert.ToBase64String(Results); - - } - - public static async Task DecryptString(string Message) - { - await Task.Delay(100); - byte[] Results; - System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); - MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); - byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(CryptoString)); - TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); - TDESAlgorithm.Key = TDESKey; - TDESAlgorithm.Mode = CipherMode.ECB; - TDESAlgorithm.Padding = PaddingMode.PKCS7; - byte[] DataToDecrypt = Convert.FromBase64String(Message); - try - { - ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor(); - Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length); - } - catch(Exception ex) - { - LogFile.WriteLine(ex.Message.ToString() + $" Datenlänge: {DataToDecrypt.Length}"); - return "%%"; - } - finally - { - TDESAlgorithm.Clear(); - HashProvider.Clear(); - } - return UTF8.GetString(Results); - } - } -} diff --git a/AV-ToolV3/Export.cs b/AV-ToolV3/Export.cs index ccecf29..091b665 100644 --- a/AV-ToolV3/Export.cs +++ b/AV-ToolV3/Export.cs @@ -7,26 +7,50 @@ using System.Threading.Tasks; namespace PEP_Tool { public static class Export - { - public static void ExportCSV(List list) + {/*System.Windows.Controls.DataGrid*/ + public static void ExportCSV(System.Data.DataView list) { - string[] arr = new string[list.Count]; + var l = list.ToTable(); + string[] arr = new string[l.Rows.Count]; StringBuilder sb = new StringBuilder(); MainWindow.main.BarIsIndeterminate = false; MainWindow.main.BarVisibility = System.Windows.Visibility.Visible; - MainWindow.main.BarMax = list.Count; + MainWindow.main.BarMax = l.Rows.Count; - sb.AppendLine($"Name;Vorname;Datum;Zuweisung;Bemerkung;" + Environment.NewLine); + sb.AppendLine($"Name;Vorname;Datum;Abteilung;Zuweisung;Bemerkung;" + Environment.NewLine); int count = 0; - foreach(var user in list) + foreach (System.Data.DataRow user in l.Rows) { count++; - sb.AppendLine($"{user.Name};{user.Vorname};{user.Datum.ToString("dd.MM.yyyy")};{user.Zuweisung};{user.Bemerkung};"); + sb.AppendLine($"{user.ItemArray[1]};{user.ItemArray[2]};{user.ItemArray[4].ToString().Split(' ')[0]};{user.ItemArray[3]};{user.ItemArray[9]};{user.ItemArray[10]};"); MainWindow.main.BarValue = count; } + //StringBuilder sb = new StringBuilder(); + + //IEnumerable columnNames = l.Columns.Cast(). + // Select(column => column.ColumnName); + //sb.AppendLine(string.Join(",", columnNames)); + + //foreach (System.Data.DataRow row in l.Rows) + //{ + // IEnumerable fields = row.ItemArray.Select(field => field.ToString()); + // sb.AppendLine(string.Join(",", fields)); + //} + + //object[,] data = list.PrepareData(); + //StringBuilder builder = new StringBuilder(Convert.ToString((char)65279)); + + //for (int k = 0; k < data.GetLength(0); k++) + //{ + // List tempList = new List(); + // for (int l = 0; l < data.GetLength(1); l++) + // tempList.Add(data[k, l].ToString()); + // builder.Append(string.Join(",", tempList)).Append(Environment.NewLine); + //} + MainWindow.main.BarIsIndeterminate = true; MainWindow.main.BarVisibility = System.Windows.Visibility.Collapsed; @@ -40,10 +64,10 @@ namespace PEP_Tool dialog.Title = "Liste exportieren"; dialog.ShowDialog(); - + if (dialog.FileName != "") - System.IO.File.WriteAllText(dialog.FileName, sb.ToString()); + System.IO.File.WriteAllText(dialog.FileName, sb.ToString(), Encoding.UTF8); } diff --git a/AV-ToolV3/FodyWeavers.xml b/AV-ToolV3/FodyWeavers.xml index c6e1b7c..a5dcf04 100644 --- a/AV-ToolV3/FodyWeavers.xml +++ b/AV-ToolV3/FodyWeavers.xml @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/AV-ToolV3/FodyWeavers.xsd b/AV-ToolV3/FodyWeavers.xsd new file mode 100644 index 0000000..44a5374 --- /dev/null +++ b/AV-ToolV3/FodyWeavers.xsd @@ -0,0 +1,111 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/AV-ToolV3/Helper.cs b/AV-ToolV3/Helper.cs index a925ba4..439a374 100644 --- a/AV-ToolV3/Helper.cs +++ b/AV-ToolV3/Helper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -110,7 +111,7 @@ namespace PEP_Tool var i = text.CountSubstring("\n"); var strArr = text.Split("\n".ToCharArray()); - for(var j = startLine; j <= i; j++) + for (var j = startLine; j <= i; j++) { strArr[j] = $"{j - startLine + 1}. " + strArr[j].TrimStart("1234567890. ".ToCharArray()); } @@ -118,6 +119,41 @@ namespace PEP_Tool text = string.Join("\n", strArr); return text; } + + public static List DataTableToListString(System.Data.DataTable dataTable, int Columns = 1, int startColumn = 0) + { + switch (Columns) + { + case 1: + return (from System.Data.DataRow dr in dataTable.Rows select dr[startColumn + 0].ToString()).ToList(); + break; + case 2: + return (from System.Data.DataRow dr in dataTable.Rows select dr[startColumn + 0].ToString() + " " + dr[startColumn + 1].ToString()).ToList(); + break; + + + default: + return (from System.Data.DataRow dr in dataTable.Rows select dr[0].ToString()).ToList(); + } + } + + public static List DataTableToGewerk(System.Data.DataTable dataTable) + { + List x = new List(); + + foreach (DataRow dr in dataTable.Rows) + { + x.Add(new Gewerk() + { + Abteilung = dr[0].ToString(), + MAVerfuegbar = dr[1].ToString(), + MAAnwesend = dr[2].ToString(), + MAVerplant = dr[3].ToString() + }); + } + + return x; + } } public class ReplaceDotConverter : System.Windows.Data.IValueConverter diff --git a/AV-ToolV3/KTOverview.xaml b/AV-ToolV3/KTOverview.xaml new file mode 100644 index 0000000..528aab9 --- /dev/null +++ b/AV-ToolV3/KTOverview.xaml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AV-ToolV3/MainWindow.xaml.cs b/AV-ToolV3/MainWindow.xaml.cs index c331a10..f336bd7 100644 --- a/AV-ToolV3/MainWindow.xaml.cs +++ b/AV-ToolV3/MainWindow.xaml.cs @@ -2,23 +2,15 @@ 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; @@ -38,105 +30,17 @@ namespace PEP_Tool 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 @@ -147,22 +51,16 @@ namespace PEP_Tool } set { - if (lastChangeTime != value) + Dispatcher.BeginInvoke(new Action(() => { lastChangeTime = value; - - Dispatcher.BeginInvoke(new Action(() => - { - if (checkForChange) - { - lblLastChange.Text = lastChangeTime; - lblLastChange.Foreground = new SolidColorBrush(Colors.Red); - } - })); - } + lblLastChange.Text = lastChangeTime; + lblLastChange.Foreground = new SolidColorBrush(Colors.Red); + })); } } - + + public DataTable sqlList = new DataTable("UserList"); #endregion @@ -187,11 +85,11 @@ namespace PEP_Tool 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 (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) @@ -279,11 +177,8 @@ namespace PEP_Tool private async void Start() { - //jsonTimer.Interval = TimeSpan.FromSeconds(3); - //jsonTimer.Tick += JsonTimer_Tick; - bemerkungTimer.Interval = TimeSpan.FromSeconds(10); - bemerkungTimer.Tick += BemerkungTimer_Tick; + bemerkungTimer.Tick += (sender, e) => { BemerkungTimer_Tick(sender, e); }; telefonTimer.Interval = TimeSpan.FromSeconds(10); telefonTimer.Tick += TelefonTimer_Tick; @@ -291,42 +186,42 @@ namespace PEP_Tool 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; }); + await Task.Run(() => + { + sqlList = SQL.ReadAllData(sqlList).Result; + }); - - var abtFilterList = DefaultUserList.Select(p => p.Abteilung).Distinct().ToList(); - abtFilterList.Insert(0, ""); + var abtFilterList = AbteilungsNamen.Select(p => p.Value.Item2).Distinct().ToList(); + //abtFilterList.Insert(0, ""); abtFilterList.Sort(); cBFilterAbteilung.ItemsSource = cBFilterAbteilung2.ItemsSource = cBFilterAbteilung3.ItemsSource = abtFilterList; - //flowDocu.ItemsSource = UserList; + flowDocu.DataContext = sqlList; btnFrueh.IsEnabled = true; btnSpaet.IsEnabled = true; btnNacht.IsEnabled = true; + //btnZugZuweisungen.IsEnabled = true; - //bar.Visibility = Visibility.Collapsed; - //li.Visibility = Visibility.Collapsed; - //li.IsActive = false; + li.Visibility = Visibility.Collapsed; - //jsonTimer.Start(); + newVersionTimer.Start(); FileWatcher(); - newVersionTimer.Start(); - } + for (var i = 0; i <= 7; i++) + flowDocu.Columns[i].Width = flowDocu.Columns[i].ActualWidth + 40; + + SQL.WriteSQL($"REPLACE INTO track SET `Client` = '{Environment.MachineName}', `User` = '{Environment.UserName}', `Online` = true, `Version` = '{Properties.Settings.Default.Version}'"); + } bool versionMessage = false; private void NewVersionTimer_Tick(object sender, EventArgs e) @@ -344,24 +239,37 @@ namespace PEP_Tool } } - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt")) + if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt"))//@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt")) { if (!versionMessage) { + flowDocu.IsEnabled = false; + DisableFilterChange(); + li.Visibility = Visibility.Visible; //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(); + MessageBox.Show(this, "Die Anwendung kann aufgrund von Wartungsarbeiten aktuell nicht genutzt werden\nDie Anwendung wird anschließend automatisch freigeschaltet.\n\n", "Info", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); + versionMessage = true; } } + + if (versionMessage && !File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Maintenance.txt")) + { + sqlList = SQL.ReadAllData(sqlList.DefaultView.RowFilter).Result; + flowDocu.DataContext = sqlList; + + flowDocu.IsEnabled = true; + EnableFilterChange(); + li.Visibility = Visibility.Collapsed; + MessageBox.Show(this, "Die Anwendung steht Ihnen jetzt wieder zur Verfügung!\n\n", "Info", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); + versionMessage = false; + } } - private async void FileWatcher() + private void FileWatcher() { - FileSystemWatcher fs = new FileSystemWatcher(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\", "*.json"); + FileSystemWatcher fs = new FileSystemWatcher(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\", "sql.lck"); fs.EnableRaisingEvents = true; fs.IncludeSubdirectories = false; @@ -370,585 +278,28 @@ namespace PEP_Tool li.Visibility = Visibility.Collapsed; } + + int fsChangeError = 0; bool checkOldJsonData = true; + string eName = ""; private async void Fs_Changed(object sender, FileSystemEventArgs e) { - if(e.Name == "Zuweisungen.json") + var x = File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\sql.lck").ToString("HH:mm:ss dd.MM.yy"); + LastChangeTime = x; + + //await Task.Delay(20); + Dispatcher.BeginInvoke(new Action(() => { - 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(); + sqlList = SQL.ReadAllData(sqlList.DefaultView.RowFilter).Result; + flowDocu.DataContext = sqlList; + })); } - private async void ComboBox_DropDownClosed(object sender, EventArgs e) + private async void Zuweisung_DropDownClosed(object sender, EventArgs e) { li.Visibility = Visibility.Visible; - await Task.Delay(30); + flowDocu.IsEnabled = false; try { @@ -957,151 +308,32 @@ namespace PEP_Tool 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 zuw = box.SelectedItem.ToString(); - 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; + await SQL.WriteSQL($"UPDATE `mitarbeiter_static` `p` left join `mitarbeiter_change` `o` ON o.mitarbeiter_static_PersNr = p.PersNr SET Zuweisung = '{zuw}' WHERE p.PersNr = '{persnummer.Text}' AND o.Datum = '{Convert.ToDateTime(datum.Text).ToString("yyyy-MM-dd")}'", sqlList); } - catch (Exception ex) + catch (Exception) { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - - //li.Visibility = Visibility.Collapsed; } + + li.Visibility = Visibility.Hidden; + flowDocu.IsEnabled = true; + + + fs.Changed += Fs_Changed; } -#region Bemerkung + private void Zuweisung_DropDownOpened(object sender, EventArgs e) + { + fs.Changed -= Fs_Changed; + } - List BemerkungenChanges = new List(); - TextBox bemerkungTextbox = null; - //TextBox lastTextChangedTextbox = null; - private void Bemerkung_KeyDown(object sender, KeyEventArgs e) + #region Bemerkung + + + private void Bemerkung_PreviewKeyUp(object sender, KeyEventArgs e) { try { @@ -1111,16 +343,11 @@ namespace PEP_Tool { 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; + bemerkungTimer.Stop(); + bemerkungTimer.Start(); } catch (Exception ex) { @@ -1128,209 +355,65 @@ namespace PEP_Tool } } - private void Bemerkung_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) + private async 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()); - } + Mouse.OverrideCursor = Cursors.Wait; + //li.Visibility = Visibility.Visible; + await Task.Delay(10); + SaveBemerkung(sender); } - + private void BemerkungTimer_Tick(object sender, EventArgs e) { + Keyboard.ClearFocus(); + bemerkungTimer.Stop(); + } + + private async void SaveBemerkung(object sender) + { + bemerkungTimer.Stop(); + 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(); + var x = (sender as TextBox); + var y = x.DataContext as DataRowView; + var z = y.Row.ItemArray[0]; + var datum = y.Row.ItemArray[4]; + await SQL.WriteSQL($"UPDATE `mitarbeiter_static` `p` left join `mitarbeiter_change` `o` ON o.mitarbeiter_static_PersNr = p.PersNr SET Bemerkung = '{x.Text}' WHERE p.PersNr = '{z}' AND o.Datum = '{Convert.ToDateTime(datum).ToString("yyyy-MM-dd")}'", sqlList); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } + //li.Visibility = Visibility.Collapsed; + Mouse.OverrideCursor = Cursors.Arrow; } - 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); + (sender as TextBox).Focus(); + bemerkungTimer.Start(); + fs.Changed -= Fs_Changed; - row.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; - //dataGridRow.Height = 55; - dataGridCell.Height = 55; - row.Height = 50; + var box = sender as TextBox; + box.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; + box.Height = 50; } private void Bemerkung_LostFocus(object sender, RoutedEventArgs e) { - var row = sender as TextBox; - //DataGridRow dataGridRow = FindParent(row); - DataGridCell dataGridCell = FindParent(row); + var box = sender as TextBox; + box.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; + box.Height = 30; - row.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; - //dataGridRow.Height = 30; - if(dataGridCell != null) dataGridCell.Height = 30; - row.Height = 30; - - //bemerkungTimer.Interval = TimeSpan.FromSeconds(1.5); + fs.Changed += Fs_Changed; } - //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() @@ -1366,197 +449,105 @@ namespace PEP_Tool btnMinusDay.IsEnabled = true; btnPlusDay.IsEnabled = true; } -#endregion + #endregion -#region Telefon + #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); + Keyboard.ClearFocus(); telefonTimer.Stop(); - EnableFilterChange(); } - private void Telefon_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) + private void Telefon_LostKeyboardFocus(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 }); - } - } + Mouse.OverrideCursor = Cursors.Wait; + SaveTelefon(sender); } - private async void SaveTelefon(List telefonChanges) + private async void SaveTelefon(object sender) { - 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; - } - } + //li.Visibility = Visibility.Visible; + telefonTimer.Stop(); try { - var json = Newtonsoft.Json.JsonConvert.SerializeObject(TelefonList); - json = await Crypto.EncryptString(json); - byte[] jsonT = new UTF8Encoding(true).GetBytes(json); + var x = (sender as TextBox); + var y = x.DataContext as DataRowView; + var z = y.Row.ItemArray[0]; - 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; + await SQL.WriteSQL($"UPDATE `mitarbeiter_static` `p` left join `mitarbeiter_change` `o` ON o.mitarbeiter_static_PersNr = p.PersNr SET Telefon = '{x.Text}' WHERE p.PersNr = '{z}'", sqlList); } - catch (Exception) + catch (Exception ex) { - - throw; + Debug.WriteLine(ex.ToString()); } - } + //li.Visibility = Visibility.Collapsed; + + Mouse.OverrideCursor = Cursors.Arrow; + } + + + #endregion + + #region Lizenzen + private async void Lizenzen_DropDownOpened(object sender, EventArgs e) + { + var box = sender as ComboBox; + DataGridRow dataGridRow = FindParent(box); + int index = dataGridRow.GetIndex(); -#endregion + TextBlock persnummer = null; -#region Filter + persnummer = flowDocu.Columns[9].GetCellContent(flowDocu.Items[index]) as TextBlock; + + var l = await SQL.ReadSQL($"select lizenz from lizenzen_has_mitarbeiter_static m left join lizenzen l ON m.lizenzen_ID = l.ID where m.mitarbeiter_static_PersNr = {persnummer.Text}"); + + var t = Helper.DataTableToListString(l); + + t.Insert(0, ""); + + box.ItemsSource = t; + } + + private void Lizenzen_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + var combo = sender as ComboBox; + combo.SelectedIndex = 0; + } + + #endregion + + #region Schaltzustand + + private async void BtnSchalt_Click(object sender, RoutedEventArgs e) + { + var x = sender as Button; + + Zugzuweisung z = new Zugzuweisung(x); + z.ShowDialog(); + } + + private void BtnZugZuweisungen_Click(object sender, RoutedEventArgs e) + { + Zugzuweisung z = new Zugzuweisung(); + z.ShowDialog(); + } + + #endregion + + #region Filter string abtFilter = ""; string abtFilter2 = ""; @@ -1567,7 +558,7 @@ namespace PEP_Tool { abtFilter = cBFilterAbteilung.SelectedItem == null ? "" : cBFilterAbteilung.SelectedItem.ToString(); - CreateList(); + FilterList(); if (cBFilterAbteilung.SelectedItem != null && cBFilterAbteilung.SelectedItem.ToString() != "") cBFilterAbteilung2.IsEnabled = true; else if (cBFilterAbteilung.SelectedItem == null || cBFilterAbteilung.SelectedItem.ToString() == "") @@ -1591,7 +582,7 @@ namespace PEP_Tool abtFilter = cBFilterAbteilung.SelectedItem == null ? "" : cBFilterAbteilung.SelectedItem.ToString(); abtFilter2 = cBFilterAbteilung2.SelectedItem == null ? "" : cBFilterAbteilung2.SelectedItem.ToString(); - CreateList(); + FilterList(); if (cBFilterAbteilung2.SelectedItem != null && cBFilterAbteilung2.SelectedItem.ToString() != "") cBFilterAbteilung3.IsEnabled = true; else if (cBFilterAbteilung2.SelectedItem == null || cBFilterAbteilung2.SelectedItem.ToString() == "") @@ -1616,7 +607,7 @@ namespace PEP_Tool abtFilter2 = cBFilterAbteilung2.SelectedItem == null ? "" : cBFilterAbteilung2.SelectedItem.ToString(); abtFilter3 = cBFilterAbteilung3.SelectedItem == null ? "" : cBFilterAbteilung3.SelectedItem.ToString(); - CreateList(); + FilterList(); } catch (Exception ex) { @@ -1639,7 +630,7 @@ namespace PEP_Tool btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); - CreateList(); + FilterList(); } catch (Exception ex) { @@ -1661,7 +652,7 @@ namespace PEP_Tool btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")); btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); - CreateList(); + FilterList(); } catch (Exception ex) { @@ -1683,7 +674,7 @@ namespace PEP_Tool btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4C898989")); - CreateList(); + FilterList(); } catch (Exception ex) { @@ -1705,7 +696,7 @@ namespace PEP_Tool 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(); + FilterList(); } catch (Exception ex) { @@ -1727,7 +718,7 @@ namespace PEP_Tool 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(); + FilterList(); } catch (Exception ex) { @@ -1749,7 +740,7 @@ namespace PEP_Tool 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(); + FilterList(); } catch (Exception ex) { @@ -1765,7 +756,7 @@ namespace PEP_Tool lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';'); btnFrueh.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); - CreateList(); + FilterList(); } private void cBSpaet_Unchecked(object sender, RoutedEventArgs e) @@ -1774,7 +765,7 @@ namespace PEP_Tool lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';'); btnSpaet.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); - CreateList(); + FilterList(); } private void cBNacht_Unchecked(object sender, RoutedEventArgs e) @@ -1783,7 +774,7 @@ namespace PEP_Tool lastButton = lastButton.Replace(";;", ";").TrimStart(';').TrimEnd(';'); btnNacht.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#4CDDDDDD")); - CreateList(); + FilterList(); } private void uncheck_Boxes() @@ -1815,7 +806,7 @@ namespace PEP_Tool { try { - CreateList(tbSearch.Text, true, cBSearchWithFilters.IsChecked.Value); + FilterList(tbSearch.Text, true, cBSearchWithFilters.IsChecked.Value); tbSearch.Text = ""; } catch (Exception ex) @@ -1830,7 +821,7 @@ namespace PEP_Tool { try { - CreateList(); + FilterList(); } catch (Exception ex) { @@ -1867,9 +858,30 @@ namespace PEP_Tool dPDatum.SelectedDate = DateTime.Now.Date + TimeSpan.FromDays(1); } -#endregion + private async void FilterList(string search = "", bool isSearch = false, bool searchWithFilter = false) + { + try + { + var date = dPDatum.SelectedDate.HasValue ? dPDatum.SelectedDate.ToString() : ""; -#region Print and Export + sqlList = await TableCreater.CreateList(sqlList, abtFilter, abtFilter2, abtFilter3, lastButton, date, search, searchWithFilter, isSearch); + + + //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); + } + } + + + #endregion + + #region Print and Export private async void btnPrint_Click(object sender, RoutedEventArgs e) { @@ -1880,14 +892,14 @@ namespace PEP_Tool bar.IsIndeterminate = true; bar.Visibility = Visibility.Visible; - List printList = new List(); - printList = userList; + DataGrid printList = new DataGrid(); DataGrid grid = new DataGrid(); + + grid = print.CreatePrintGrid(sqlList); + grid.ItemsSource = sqlList.DefaultView; - grid = print.CreatePrintGrid(printList); - - if (printList.Count > 100) lblBar.Visibility = Visibility.Visible; + //if (printList.Rows.Count > 100) lblBar.Visibility = Visibility.Visible; string listTitle = ""; switch (lastButton) @@ -1917,7 +929,7 @@ namespace PEP_Tool private void btnExport_Click(object sender, RoutedEventArgs e) { - Export.ExportCSV(UserList); + Export.ExportCSV(sqlList.DefaultView); } private Visibility barVisibility; @@ -1965,112 +977,10 @@ namespace PEP_Tool } -#endregion - -#region LastChange Funktionen + #endregion - 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 + #region Extensions public static Parent FindParent(DependencyObject child) where Parent : DependencyObject @@ -2128,15 +1038,24 @@ namespace PEP_Tool //})); } + public IEnumerable GetDataGridRows(DataGrid grid) + { + var itemsSource = grid.ItemsSource; + if (null == itemsSource) yield return null; + foreach (var item in itemsSource) + { + var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; + if (null != row) yield return row; + } + } -#endregion + #endregion -#region Settings + #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; @@ -2154,7 +1073,6 @@ namespace PEP_Tool 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(); } @@ -2167,19 +1085,6 @@ namespace PEP_Tool 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"); @@ -2228,53 +1133,13 @@ namespace PEP_Tool } -#endregion + #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()); - } } @@ -2302,52 +1167,9 @@ namespace PEP_Tool 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); + await SQL.WriteSQL($"REPLACE INTO track SET `Client` = '{Environment.MachineName}', `Online` = false"); if (!onStartup) Application.Current.Shutdown(); - - } private void Window_SizeChanged(object sender, SizeChangedEventArgs e) @@ -2359,26 +1181,19 @@ namespace PEP_Tool private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e) { - var scroll = Helper.FindVisualChild((DependencyObject)sender); + //var scroll = Helper.FindVisualChild((DependencyObject)sender); - int firstRow = (int)scroll.VerticalOffset; - int lastRow = (int)scroll.VerticalOffset + (int)scroll.ViewportHeight - 1; + //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; + //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(); + //} } @@ -2437,31 +1252,24 @@ namespace PEP_Tool 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 BtnPlannedKT_Click(object sender, RoutedEventArgs e) + { + KTOverview kT = new KTOverview(); + kT.Show(); + } + + + + + private void OnPropertyChanged([CallerMemberName] string propertyName = null) { Debug.WriteLine("PropertyChanged " + propertyName); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } - } } diff --git a/AV-ToolV3/PEP_Tool.csproj b/AV-ToolV3/PEP_Tool_SQL.csproj similarity index 69% rename from AV-ToolV3/PEP_Tool.csproj rename to AV-ToolV3/PEP_Tool_SQL.csproj index 900571c..636b9e6 100644 --- a/AV-ToolV3/PEP_Tool.csproj +++ b/AV-ToolV3/PEP_Tool_SQL.csproj @@ -8,12 +8,14 @@ WinExe PEP_Tool PEP-Tool - v4.5 + v4.5.2 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 + false + publish\ true Disk @@ -26,7 +28,6 @@ true 0 1.0.0.%2a - false false true @@ -53,6 +54,9 @@ icon.ico + + ..\packages\BouncyCastle.1.8.3.1\lib\BouncyCastle.Crypto.dll + ..\packages\Costura.Fody.1.6.2\lib\dotnet\Costura.dll False @@ -60,19 +64,35 @@ ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll + + ..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll + False bin\Debug\LoadingIndicators.WPF.dll - - ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll + + ..\packages\MySql.Data.8.0.17\lib\net452\MySql.Data.dll + + + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll + + ..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll + + + + + + + + @@ -83,16 +103,32 @@ + + ..\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\Xceed.Wpf.AvalonDock.dll + + + ..\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll + + + ..\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll + + + ..\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll + + + ..\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\Xceed.Wpf.Toolkit.dll + MSBuild:Compile Designer - - + + KTOverview.xaml + NewVersionMessageBox.xaml @@ -102,13 +138,18 @@ - - - + + ucSpinnerPiston.xaml - + + Zugzuweisung.xaml + + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -133,6 +174,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + @@ -197,15 +242,13 @@ + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + - - - \ No newline at end of file diff --git a/AV-ToolV3/Print.cs b/AV-ToolV3/Print.cs index 55c2a11..0cf67cd 100644 --- a/AV-ToolV3/Print.cs +++ b/AV-ToolV3/Print.cs @@ -18,7 +18,7 @@ namespace PEP_Tool { class Print { - public DataGrid CreatePrintGrid(List List) + public DataGrid CreatePrintGrid(DataTable List) { var aktuellesGrid = List; DataGrid grid = new DataGrid(); @@ -69,7 +69,10 @@ namespace PEP_Tool grid.Width = nameColumn.Width.Value + prenameColumn.Width.Value + dateColumn.Width.Value + abtColumn.Width.Value + zuweisungenColumn.Width.Value + bemerkungColumn.Width.Value; - grid.ItemsSource = aktuellesGrid; + grid.AutoGenerateColumns = false; + grid.CanUserAddRows = false; + + //grid.DataContext = aktuellesGrid; return grid; } @@ -144,9 +147,17 @@ namespace PEP_Tool r.Cells[j].Background = Brushes.DarkGray; r.Cells[j].Foreground = Brushes.White; r.Cells[j].BorderThickness = new Thickness(1, 1, 1, 1); + + try + { var binding = (dataGrid.Columns[j] as DataGridBoundColumn).Binding as Binding; bindList.Add(binding.Path.Path); + } + catch (Exception) + { + } + } tableRowGroup.Rows.Add(r); table.RowGroups.Add(tableRowGroup); @@ -170,14 +181,50 @@ namespace PEP_Tool r = new TableRow(); for (int j = 1; j <= 6; j++) { - if (row.GetType() == typeof(TableInfo)) + //if (row.GetType() == typeof(DataGridRow)) + //{ + //var x = row.GetPropertyValueForID(j, row) != null ? row.GetPropertyValueForID(j, row).ToString() : ""; + //if (j == 3) x = x.ToString().Split(' ')[0]; + var h = 0; + //r.Cells.Add(new TableCell(new Paragraph(new Run(x)))); + switch(j) { - var x = row.GetPropertyValueForID(j, row) != null ? row.GetPropertyValueForID(j, row).ToString() : ""; - if (j == 3) x = x.ToString().Split(' ')[0]; + case 1: + h = 1; + break; + case 2: + h = 2; + break; + case 3: + h = 4; + break; + case 4: + h = 3; + break; + case 5: + h = 9; + break; + case 6: + h = 10; + break; + } - r.Cells.Add(new TableCell(new Paragraph(new Run(x)))); + if (dataGrid.ItemsSource.ToString().ToLower() == "system.data.linqdataview") + { + if (j == 3) + r.Cells.Add(new TableCell(new Paragraph(new Run(row.Row.ItemArray[h].ToString().Split(' ')[0])))); + else r.Cells.Add(new TableCell(new Paragraph(new Run(row.Row.ItemArray[h].ToString())))); - int span = 0; + } + else + { + if (j == 3) + r.Cells.Add(new TableCell(new Paragraph(new Run(row.Row.ItemArray[h].ToString().Split(' ')[0])))); + else r.Cells.Add(new TableCell(new Paragraph(new Run(row.Row.ItemArray[h].ToString())))); + } + + + int span = 0; switch (j - 1) { case 0: @@ -208,7 +255,7 @@ namespace PEP_Tool r.Cells[j - 1].BorderBrush = Brushes.DarkGray; r.Cells[j - 1].BorderThickness = new Thickness(0, 0, 1, 1); - } + //} } tableRowGroup.Rows.Add(r); diff --git a/AV-ToolV3/Properties/Settings.Designer.cs b/AV-ToolV3/Properties/Settings.Designer.cs index 022f6be..ee40394 100644 --- a/AV-ToolV3/Properties/Settings.Designer.cs +++ b/AV-ToolV3/Properties/Settings.Designer.cs @@ -23,18 +23,6 @@ namespace PEP_Tool.Properties { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LizenzenPath { - get { - return ((string)(this["LizenzenPath"])); - } - set { - this["LizenzenPath"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -85,7 +73,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2.0.4")] + [global::System.Configuration.DefaultSettingValueAttribute("3.0.1")] public string Version { get { return ((string)(this["Version"])); @@ -157,7 +145,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthBemerkung { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthBemerkung"])); @@ -169,7 +157,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthZuweisung { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthZuweisung"])); @@ -181,7 +169,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthLizenzen { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthLizenzen"])); @@ -193,7 +181,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthAbteilung { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthAbteilung"])); @@ -205,7 +193,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthGehen { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthGehen"])); @@ -217,7 +205,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthKommen { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthKommen"])); @@ -229,7 +217,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthDatum { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthDatum"])); @@ -241,7 +229,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthVorname { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthVorname"])); @@ -253,7 +241,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthName { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthName"])); @@ -265,7 +253,7 @@ namespace PEP_Tool.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] + [global::System.Configuration.DefaultSettingValueAttribute("*")] public global::System.Windows.Controls.DataGridLength WidthTelefon { get { return ((global::System.Windows.Controls.DataGridLength)(this["WidthTelefon"])); diff --git a/AV-ToolV3/Properties/Settings.settings b/AV-ToolV3/Properties/Settings.settings index c9b4bed..39efd0b 100644 --- a/AV-ToolV3/Properties/Settings.settings +++ b/AV-ToolV3/Properties/Settings.settings @@ -2,9 +2,6 @@ - - - @@ -18,7 +15,7 @@ 1.0 - 2.0.4 + 3.0.1 0 @@ -36,34 +33,34 @@ 1323 - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * - 0 + * \ No newline at end of file diff --git a/AV-ToolV3/Reader.cs b/AV-ToolV3/Reader.cs index 5b1ca99..05fd907 100644 --- a/AV-ToolV3/Reader.cs +++ b/AV-ToolV3/Reader.cs @@ -1,6 +1,7 @@ using Microsoft.Win32; using System; using System.Collections.Generic; +using System.Data; using System.IO; using System.Linq; using System.Text; @@ -11,8 +12,6 @@ namespace PEP_Tool { public static class Reader { - public static bool PersonalNummerIsEnabled { get; set; } = true; - public static string OpenFile(string Dialogname = "Datei") { OpenFileDialog dialog = new OpenFileDialog(); @@ -31,692 +30,6 @@ namespace PEP_Tool return result; } - private static List CreateLizenzList() - { - var path = ""; - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Lizenzen.csv")) path = @"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Lizenzen.csv"; - else - path = Properties.Settings.Default.LizenzenPath == "" ? OpenFile("Lizenzen") : Properties.Settings.Default.LizenzenPath; - - if (!File.Exists(path)) path = OpenFile("Lizenzen"); - - - if (File.ReadAllLines(path).First().StartsWith("Name;") || File.ReadAllLines(path).First().StartsWith("Personalnummer;0001")) - { - if (path != Properties.Settings.Default.LizenzenPath) - { - Properties.Settings.Default.LizenzenPath = path; - Properties.Settings.Default.Save(); - } - - var lizenzen = File.ReadAllLines(path, Encoding.GetEncoding(850)); - var LizenzName = lizenzen.First().Split(';'); - var lizenzList = new List(); - var sa = new List(); - - - for (var j = 1; j < lizenzen.Count(); j++) - { - string fLine = ""; - var x = lizenzen[j].Split(';'); - for (var i = 0; i < x.Length; i++) - { - var word = x[i]; - if (word == "vorhanden" || word.Contains(".")) - word = LizenzName[i]; - - if (word == "nicht mehr benötigt" || word == "verfallen") word = ""; - - fLine += word + ";"; - } - - lizenzList.Add(new TableInfo() - { - PersNummer = fLine.Split(';')[0], - Lizenzen = fLine.Split(';').Slice(1, fLine.Split(';').Count()).ToList().Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList() - }); - } - - return lizenzList; - } - else - { - MessageBox.Show("Keine korrekte Lizenzen-Datei ausgewählt", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK, MessageBoxOptions.ServiceNotification); - return CreateLizenzList(); - } - } - - static bool exceptionBemerkungen = false; - static List lastBemerkungenList = new List(); - static DateTime lastWriteBemerkungen = DateTime.Now; - public static async Task> CreateBemerkungenList() - { - if (MainWindow.propertyChangeAllowed) - { - try - { - var list = new List(); - list = null; - - var tNew = File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json"); - - if (tNew != lastWriteBemerkungen) - { - if (Convert.ToDateTime(MainWindow.main.LastChangeTime) < tNew) MainWindow.main.LastChangeTime = tNew.ToString(); - - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json")) - { - try - { - //var jsonBemerkungen = File.ReadAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json"); - - for (var i = 0; list == null; i++) - { - if (i >= 50) - { - throw new StackOverflowException("Anzahl der Versuche 'ReadBemerkungenJSON' überschritten (i >= 50)"); - break; - } - - await Task.Delay(100); - list = await ReadBemerkungenJSON(); - //if (list != null) break; - } - - - if (exceptionBemerkungen) - { - LogFile.WriteLine("Successfully created BemerkungenList"); - exceptionBemerkungen = false; - } - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - exceptionBemerkungen = true; - - return await CreateBemerkungenList(); - } - } - else File.CreateText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json"); - - lastWriteBemerkungen = tNew; - - if (list != null) - { - lastBemerkungenList = list; - return list; - } - else - { - LogFile.WriteLine("B-list is null"); - return await CreateBemerkungenList(); - } - } - else return lastBemerkungenList; - - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - return lastBemerkungenList; - } - } - else if (lastBemerkungenList != null) return lastBemerkungenList; - else return await CreateBemerkungenList(); - } - - private static async Task> ReadBemerkungenJSON() - { - var fail = false; - - try - { - using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json", FileMode.Open, FileAccess.Read, FileShare.Read)) //Write | FileShare.Delete - { - if (fs != null) - { - byte[] json = new byte[fs.Length]; - await fs.ReadAsync(json, 0, (int)fs.Length); - var jsonBemerkungen = Encoding.UTF8.GetString(json); - - if (!Helper.IsBase64String(jsonBemerkungen) || jsonBemerkungen == "") - return null; - - var jsonBemerkungenDecrypted = "%%"; - for (var i = 0; jsonBemerkungenDecrypted == "%%" || i <= 10; i++) - { - jsonBemerkungenDecrypted = await Crypto.DecryptString(jsonBemerkungen); - - if (jsonBemerkungenDecrypted == "%%") - { - if (i > 0) - { - LogFile.WriteLine($"Decrypt Bemerkungen failed - for the {i}. Time - Trying again..."); - fail = true; - } - - using (var fs1 = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Bemerkungen.json", FileMode.Open, FileAccess.Read, FileShare.Read))//Write | FileShare.Delete - { - json = new byte[fs1.Length]; - await fs1.ReadAsync(json, 0, (int)fs1.Length); - jsonBemerkungen = Encoding.UTF8.GetString(json); - - await Task.Delay(100); - } - } - else break; - } - - if (fail) LogFile.WriteLine("Decrypt Bemerkungen succeeded"); - fail = false; - - //jsonBemerkungen = Crypto.DecryptString(jsonBemerkungen); - var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonBemerkungenDecrypted); - - //jsonLength = json == null ? 111111 : json.Length; - //jsonBemerkungenLength = jsonBemerkungen == null ? 111111 : jsonBemerkungen.Length; - - return list; - } - else - { - fs.Dispose(); - return null; - } - } - } - catch (Exception) - { - return null; - } - } - - static bool exceptionZuweisungen = false; - static List lastZuweisungenList = new List(); - public static DateTime lastWriteZuweisungen = DateTime.Now; - public static async Task> CreateZuweisungenList() - { - if (MainWindow.propertyChangeAllowed) - { - try - { - var list = new List(); - list = null; - - var tNew = File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json"); - - - if (tNew != lastWriteZuweisungen) - { - if (Convert.ToDateTime(MainWindow.main.LastChangeTime) < tNew) MainWindow.main.LastChangeTime = tNew.ToString(); - - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json")) - { - var jsonLength = 0; - var jsonZuweisungenLength = 0; - - - try - { - //var jsonZuweisungen = File.ReadAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json"); - - for (var i = 0; list == null; i++) - { - await Task.Delay(100); - list = await ReadZuweisungenJSON(); - - //if (list != null) break; - if (i >= 50) - { - LogFile.WriteLine("Anzahl der Versuche 'ReadZuweisungenJSON' überschritten (i >= 50)"); - i = 0; - break; - } - } - - if (exceptionZuweisungen) - { - LogFile.WriteLine("Successfully created ZuweisungenList"); - exceptionZuweisungen = false; - } - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - - LogFile.WriteLine("json.Length: " + jsonLength); - LogFile.WriteLine("jsonZuweisungen.Length " + jsonZuweisungenLength); - - - exceptionZuweisungen = true; - - return await CreateZuweisungenList(); - } - } - else File.CreateText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json"); - - lastWriteZuweisungen = tNew; - - if (list != null) - { - lastZuweisungenList = list; - return list; - } - else - { - LogFile.WriteLine("list is null"); - return lastZuweisungenList;//await CreateZuweisungenList(); - } - } - else return lastZuweisungenList; - - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - return lastZuweisungenList; - } - } - else if (lastZuweisungenList != null) return lastZuweisungenList; - else return await CreateZuweisungenList(); - } - - private static async Task> ReadZuweisungenJSON() - { - var fail = false; - try - { - using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json", FileMode.Open, FileAccess.Read, FileShare.Read)) //Test 25.07.19 FileShare.ReadWrite | FileShare.Delete - { - if (fs != null) - { - byte[] json = new byte[fs.Length]; - await fs.ReadAsync(json, 0, (int)fs.Length); - var jsonZuweisungen = Encoding.UTF8.GetString(json); - - if (!Helper.IsBase64String(jsonZuweisungen) || jsonZuweisungen == "") - return null; - - var jsonZuweisungenDecrypted = "%%"; - for (var i = 0; jsonZuweisungenDecrypted == "%%" || i <= 10; i++) - { - jsonZuweisungenDecrypted = await Crypto.DecryptString(jsonZuweisungen); - - if (jsonZuweisungenDecrypted == "%%") - { - if (i > 0) - { - LogFile.WriteLine($"Decrypt Zuweisungen failed - for the {i}. Time - Trying again..."); - - fail = true; - } - - using (var fs1 = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Zuweisungen.json", FileMode.Open, FileAccess.Read, FileShare.Read))//Write | FileShare.Delete - { - json = new byte[fs1.Length]; - await fs1.ReadAsync(json, 0, (int)fs1.Length); - jsonZuweisungen = Encoding.UTF8.GetString(json); - - await Task.Delay(1000); - } - } - else break; - } - - if (fail) LogFile.WriteLine("Decrypt Zuweisungen succeeded"); - fail = false; - - var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonZuweisungenDecrypted); - //var items = Enumerable.SequenceEqual(list, lastZuweisungenList); - //jsonLength = json == null ? 111111 : json.Length; - //jsonZuweisungenLength = jsonZuweisungen == null ? 111111 : jsonZuweisungen.Length; - - return list; - } - else - { - fs.Dispose(); - - return null; - } - } - } - catch (Exception ex) - { - - LogFile.WriteLine(ex.ToString()); - return null; - } - - } - - - static bool exceptionTelefon = false; - static List lastTelefonList = new List(); - public static DateTime lastWriteTelefon = DateTime.Now; - public static async Task> CreateTelefonList() - { - if (MainWindow.propertyChangeAllowed) - { - try - { - var list = new List(); - list = null; - - var tNew = File.GetLastWriteTime(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json"); - - - if (tNew != lastWriteTelefon) - { - if (Convert.ToDateTime(MainWindow.main.LastChangeTime) < tNew) MainWindow.main.LastChangeTime = tNew.ToString(); - - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json")) - { - var jsonLength = 0; - var jsonTelefonLength = 0; - - - try - { - //var jsonTelefon = File.ReadAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json"); - - for (var i = 0; list == null; i++) - { - list = await ReadTelefonJSON(); - await Task.Delay(100); - //if (list != null) break; - if (i >= 50) - { - LogFile.WriteLine("Anzahl der Versuche 'ReadTelefonJSON' überschritten (i >= 50)"); - i = 0; - break; - } - } - - if (exceptionTelefon) - { - LogFile.WriteLine("Successfully created TelefonList"); - exceptionTelefon = false; - } - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - - LogFile.WriteLine("json.Length: " + jsonLength); - LogFile.WriteLine("jsonTelefon.Length " + jsonTelefonLength); - - - exceptionTelefon = true; - - return await CreateTelefonList(); - } - } - else File.CreateText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json"); - - lastWriteTelefon = tNew; - - if (list != null) - { - lastTelefonList = list; - return list; - } - else - { - LogFile.WriteLine("list is null"); - return lastTelefonList;//await CreateTelefonList(); - } - } - else return lastTelefonList; - - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - return lastTelefonList; - } - } - else if (lastTelefonList != null) return lastTelefonList; - else return await CreateTelefonList(); - } - - private static async Task> ReadTelefonJSON() - { - var fail = false; - try - { - using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json", FileMode.Open, FileAccess.Read, FileShare.Read)) //Write | FileShare.Delete - { - if (fs != null) - { - byte[] json = new byte[fs.Length]; - await fs.ReadAsync(json, 0, (int)fs.Length); - var jsonTelefon = Encoding.UTF8.GetString(json); - - if (!Helper.IsBase64String(jsonTelefon) || jsonTelefon == "") - return null; - - var jsonTelefonDecrypted = "%%"; - for (var i = 0; jsonTelefonDecrypted == "%%" || i <= 10; i++) - { - jsonTelefonDecrypted = await Crypto.DecryptString(jsonTelefon); - - if (jsonTelefonDecrypted == "%%") - { - if (i > 0) - { - LogFile.WriteLine($"Decrypt Telefon failed - for the {i}. Time - Trying again..."); - - fail = true; - } - - using (var fs1 = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\Telefon.json", FileMode.Open, FileAccess.Read, FileShare.Read))//Write | FileShare.Delete - { - json = new byte[fs1.Length]; - await fs1.ReadAsync(json, 0, (int)fs1.Length); - jsonTelefon = Encoding.UTF8.GetString(json); - - await Task.Delay(1000); - } - } - else break; - } - - if (fail) LogFile.WriteLine("Decrypt Telefon succeeded"); - fail = false; - - var list = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonTelefonDecrypted); - //var items = Enumerable.SequenceEqual(list, lastTelefonList); - //jsonLength = json == null ? 111111 : json.Length; - //jsonTelefonLength = jsonTelefon == null ? 111111 : jsonTelefon.Length; - - return list; - } - else - { - fs.Dispose(); - return null; - } - } - } - catch (Exception ex) - { - LogFile.WriteLine(ex.ToString()); - return null; - } - - } - - - public static List LizenzList { get; set; } - - - public static List ReadUserList(bool FilePicker = false) - { - var lizenzList = CreateLizenzList(); - LizenzList = lizenzList; - var bemerkungenList = CreateBemerkungenList(); - var zuweisungenList = CreateZuweisungenList(); - var telefonList = CreateTelefonList(); - List list = new List(); - var users = OpenUserList(FilePicker); - - foreach (var user in users) - { - if (user.StartsWith("0")) - { - var liz = new TableInfo(); - if (PersonalNummerIsEnabled) - { - var li = lizenzList.Where(p => p.PersNummer == user.Split(';')[0]); - - if (li.Count() > 0) - { - liz = li.First(); - } - } - else - { - var li = lizenzList.Where(p => p.Name == user.Split(';')[1] && p.Vorname == user.Split(';')[2]); - - if (li.Count() > 0) liz = li.First(); - } - - var bem = new TableInfo(); - if (bemerkungenList.Result != null) - { - if (PersonalNummerIsEnabled) - { - var be = bemerkungenList.Result.Where(p => p.PersNummer == user.Split(';')[0] && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (be.Count() > 0) bem = be.First(); - } - else - { - var be = bemerkungenList.Result.Where(p => p.Name == user.Split(';')[1] && p.Vorname == user.Split(';')[2] && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (be.Count() > 0) bem = be.First(); - } - } - - var zuw = new TableInfo(); - if (zuweisungenList.Result != null) - { - if (PersonalNummerIsEnabled) - { - var zu = zuweisungenList.Result.Where(p => p.PersNummer == user.Split(';')[0] && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (zu.Count() > 0) zuw = zu.First(); - } - else - { - var zu = zuweisungenList.Result.Where(p => p.Name == user.Split(';')[1] && p.Vorname == user.Split(';')[2] && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (zu.Count() > 0) zuw = zu.First(); - } - } - - var tele = new TableInfo(); - if (telefonList.Result != null) - { - if (PersonalNummerIsEnabled) - { - var tel = telefonList.Result.Where(p => p.PersNummer == user.Split(';')[0]);// && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (tel.Count() > 0) tele = tel.First(); - } - else - { - var tel = telefonList.Result.Where(p => p.Name == user.Split(';')[1] && p.Vorname == user.Split(';')[2] && p.Datum == DateTime.Parse(user.Split(';')[3])); - if (tel.Count() > 0) tele = tel.First(); - } - } - - - - Tuple abtName = null; - if (MainWindow.main.AbteilungsNamen.TryGetValue(user.Split(';')[10], out abtName)) ; - else abtName = new Tuple(user.Split(';')[10].Split(';')[0], user.Split(';')[10].Split(';')[1]); - - - - list.Add(new TableInfo() - { - PersNummer = user.Split(';')[0], - Name = user.Split(';')[1], - Vorname = user.Split(';')[2], - Datum = DateTime.Parse(user.Split(';')[3]), - Gehen = user.Split(';')[6], - Arbeitsmuster = user.Split(';')[4], - Abteilung = abtName.Item2 == "" ? abtName.Item1 : abtName.Item2, - Tagescode = user.Split(';')[12], - Beginn = user.Split(';')[5], - Zuweisung = zuw.Zuweisung, - ZuweisungsMoeglichkeiten = MainWindow.main.ZuweisungsMoeglichkeiten, - Lizenzen = liz.Lizenzen, - Bemerkung = bem.Bemerkung, - Telefon = tele.Telefon - }); - } - } - - var last = 0; - foreach (var entry in list) - { - if (last != Convert.ToInt32(entry.PersNummer)) - { - if (entry.Lizenzen != null) entry.Lizenzen.Insert(0, $"{entry.Lizenzen.Count} Lizenzen"); - else - { - entry.Lizenzen = new List(); - entry.Lizenzen.Add("keine Lizenzen"); - } - } - else if (entry.Lizenzen == null) - { - entry.Lizenzen = new List(); - entry.Lizenzen.Add("keine Lizenzen"); - } - - last = Convert.ToInt32(entry.PersNummer); - } - - list = list.Where(p => p.Tagescode == "" || p.Tagescode.All(char.IsDigit)).ToList(); - list = list.Where(p => p.Arbeitsmuster.ToLower() != "frei").ToList(); - //list.Sort((a, b) => a.Name.CompareTo(b.Name)); - list = list.OrderBy(name => name.Name).ThenBy(vorname => vorname.Vorname).ThenBy(abteilung => abteilung.Abteilung).ThenBy(datum => datum.Datum).ToList(); - - return list; - } - - private static string[] OpenUserList(bool FilePicker = false) - { - var path = ""; - - if (File.Exists(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\DTIME.csv") && !FilePicker) path = @"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\DTIME.csv"; - else - path = OpenFile("Mitarbeiterliste"); - - var users = System.IO.File.ReadAllLines(path, Encoding.GetEncoding(65001)); - - if (users[0].StartsWith("Personalnummer;Nachname")) users = users; - else - { - var x = System.Windows.MessageBox.Show("Keine gültige Mitarbeiterliste ausgewählt!", "Fehler!", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Exclamation, System.Windows.MessageBoxResult.OK, System.Windows.MessageBoxOptions.ServiceNotification); - return OpenUserList(); - } - - return users; - } - internal static List ReadZuweisungsMoeglichkeiten() { var path = ""; @@ -781,60 +94,9 @@ namespace PEP_Tool return ReadAbteilungsNamen(); } } - - - - - - - public static async Task ReadTime(Dictionary> keyValuePairs) - { - var client = await Crypto.EncryptString(Environment.MachineName); - KeyValuePair output = new KeyValuePair(); - - - if (keyValuePairs != null && keyValuePairs.Where(p => p.Key == client).Count() > 0) - { - var o = keyValuePairs.Where(p => p.Key == client).First(); - output = new KeyValuePair(o.Key, o.Value.Item1); - - } - else return 0; - - return output.Value; - } - - public static async Task>> ReadTimeJSON() - { - using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Track.json", FileMode.Open, FileAccess.Read, FileShare.Read)) //Write | FileShare.Delete - { - byte[] json = new byte[fs.Length]; - await fs.ReadAsync(json, 0, (int)fs.Length); - var jsonTrack = Encoding.UTF8.GetString(json); - - //if (!Helper.IsBase64String(jsonTrack) || jsonTrack == "") - // return null; - - //var enc = "%%"; - - //enc = await Crypto.DecryptString(jsonTrack); - try - { - var keyValuePairs = Newtonsoft.Json.JsonConvert.DeserializeObject>>(jsonTrack); - return keyValuePairs; - } - catch (Exception) - { - fs.Dispose(); - return await ReadTimeJSON(); - } - } - } - } - public static class Extensions { /// diff --git a/AV-ToolV3/SQL.cs b/AV-ToolV3/SQL.cs index 63adb2e..683812e 100644 --- a/AV-ToolV3/SQL.cs +++ b/AV-ToolV3/SQL.cs @@ -1,7 +1,8 @@ -using System; +using MySql.Data.MySqlClient; +using System; using System.Collections.Generic; using System.Data; -using System.Data.SQLite; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,117 +11,150 @@ namespace PEP_Tool { public static class SQL { - private static SQLiteConnection dbConnection; - public static SQLiteConnection DBConnection + static string connstr = "Server=10.20.97.146;Uid=PEPTool;Pwd=PEPUser;database=pep_tool"; + static MySqlConnection conn = new MySqlConnection(connstr); + static MySqlDataAdapter adp = new MySqlDataAdapter(); + + public static MySqlDataAdapter GetAdapter() { - get + return adp; + } + + public static MySqlConnection GetConnection() + { + return conn; + } + + public static async Task WriteSQL(string SQLQuery, DataTable list) + { + var filter = list.DefaultView.RowFilter; + using (conn) { - if (dbConnection == null) ConnectDB(); - return dbConnection; + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + adp.UpdateCommand = new MySqlCommand(SQLQuery, conn); + + adp.Update(list); + + list.AcceptChanges(); + + File.WriteAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\sql.lck", "erwischt!!"); + if(SQLQuery.Contains("track")) + File.WriteAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\track.lck", "erwischt!!"); + + conn.Close(); } - set + + list.DefaultView.RowFilter = filter; + return list; + } + + public static async Task WriteSQL(string SQLQuery) + { + using (conn) { - dbConnection = value; + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + + MySqlCommand cmd = new MySqlCommand(SQLQuery, conn); + cmd.ExecuteNonQuery(); + conn.Close(); + + File.WriteAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\sql.lck", "erwischt!!"); + if (SQLQuery.Contains("track")) + File.WriteAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\JSON\track.lck", "erwischt!!"); } } - public static async Task ConnectDB() + public static async Task ReadSQL(string SQLCommand, DataTable list) { - DBConnection = new SQLiteConnection("Data Source = PEP_DB.sqlite; Version = 3;"); - DBConnection.Open(); + var filter = list.DefaultView.RowFilter; + + using (conn) + { + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + adp.SelectCommand = new MySqlCommand(SQLCommand, conn); + + list.Clear(); + adp.Fill(list); + conn.Close(); + } + + list.DefaultView.RowFilter = filter; + return list; + } + + public static async Task ReadSQL(string SQLCommand) + { + DataTable list = new DataTable(); + + using (conn) + { + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + adp.SelectCommand = new MySqlCommand(SQLCommand, conn); + + list.Clear(); + adp.Fill(list); + conn.Close(); + } + + + return list; } - public static async Task WriteDB(string WriteString) + public static async Task ReadAllData(DataTable list) { - if (DBConnection.State != System.Data.ConnectionState.Open) await ConnectDB(); + var filter = list.DefaultView.RowFilter; - SQLiteCommand command = new SQLiteCommand(WriteString, DBConnection); - await command.ExecuteNonQueryAsync(); + using (conn) + { + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + adp.SelectCommand = new MySqlCommand("select PersNr,Name,Vorname,Abteilung,o.Datum,Beginn,Gehen,Tagescode,Arbeitsmuster,Zuweisung,Bemerkung,Telefon,AnzahlLizenzen,ZugNameB from mitarbeiter_static p left join mitarbeiter_change o ON o.mitarbeiter_static_PersNr = p.PersNr ORDER BY Name", conn); + list.Clear(); + adp.Fill(list); + conn.Close(); + } + + list.DefaultView.RowFilter = filter; + return list; } - - - public static void ReadDB() + public static async Task ReadAllData(string filter = "") { - - } - - - - public static void CloseDB() - { - dbConnection.Close(); - } - - - public static async Task CreateDataAdapter() - { - SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter("SELECT * FROM serial", DBConnection); - DataSet ds = new DataSet(); - - dataAdapter.FillSchema(ds, System.Data.SchemaType.Mapped); - return dataAdapter; - } - - - - public static async void CreateDB() - { - SQLiteConnection.CreateFile("PEP_DB.sqlite"); - - await ConnectDB(); - - string tableinfo = "CREATE TABLE TableInfo(" + - "PersNummer TEXT, " + - "FilePath TEXT, " + - "Datum TEXT, " + - "Zuweisung TEXT," + - "Bemerkung TEXT, " + - "Telefon TEXT)"; - - SQLiteCommand Command = new SQLiteCommand(tableinfo, DBConnection); - Command.ExecuteNonQuery(); - - //Lizenzen list string - //Zuweisungsmöglichkeiten list string - } - } - - public class SQLtoDataGrid - { - public DataView UserListView; - public DataView ZuweisungsMoeglichkeiten; - - public SQLtoDataGrid() - { - SQLiteConnection con = new SQLiteConnection("Data Source = PEP_DB.sqlite; Version = 3;"); try { - con.Open(); - string Query = "select * from UserList"; - SQLiteCommand cmdp = new SQLiteCommand(Query, con); - DataTable UserList = new DataTable(); - using (SQLiteDataAdapter ap = new SQLiteDataAdapter(cmdp)) - { - ap.Fill(UserList); - } - UserListView = UserList.DefaultView; + DataTable list = new DataTable("UserList"); - SQLiteCommand cmdc = new SQLiteCommand("select * from ZuweisungsMoeglichkeiten", con); - DataTable ZWDT = new DataTable(); - using (SQLiteDataAdapter ac = new SQLiteDataAdapter(cmdc)) + using (conn) { - ac.Fill(ZWDT); + if (conn.State == ConnectionState.Open) conn.Close(); + + conn.Open(); + adp.SelectCommand = new MySqlCommand("select PersNr,Name,Vorname,Abteilung,o.Datum,Beginn,Gehen,Tagescode,Arbeitsmuster,Zuweisung,Bemerkung,Telefon,AnzahlLizenzen,ZugNameB from mitarbeiter_static p left join mitarbeiter_change o ON o.mitarbeiter_static_PersNr = p.PersNr ORDER BY Name", conn); + list.Columns.Clear(); + adp.Fill(list); + conn.Close(); } - ZuweisungsMoeglichkeiten = ZWDT.DefaultView; + + list.DefaultView.RowFilter = filter; + return list; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); + return await ReadAllData(); } } } diff --git a/AV-ToolV3/Schaltzustand.cs b/AV-ToolV3/Schaltzustand.cs new file mode 100644 index 0000000..6ff3f74 --- /dev/null +++ b/AV-ToolV3/Schaltzustand.cs @@ -0,0 +1,14 @@ +using System; + +namespace PEP_Tool +{ + public class Schaltzustand + { + public System.Collections.Generic.List PersNr { get; set; } + public string ZugName { get; set; } + public DateTime Start { get; set; } + public DateTime Ende { get; set; } + public string Zustand { get; set; } + public string Grund { get; set; } + } +} \ No newline at end of file diff --git a/AV-ToolV3/TableCreater.cs b/AV-ToolV3/TableCreater.cs new file mode 100644 index 0000000..e31ced1 --- /dev/null +++ b/AV-ToolV3/TableCreater.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PEP_Tool +{ + public static class TableCreater + { + static int errCount = 0; + + public static async Task CreateList(DataTable userList, string filterAbteilung = "%", string filterAbteilung2 = "%", string filterAbteilung3 = "%", string Arbeitsmuster = "", string Datum = "", string Search = "", bool searchWithFilter = false, bool isSearch = false) + { + errCount++; + //System.Diagnostics.Debug.WriteLine($"{filterAbteilung}, {filterAbteilung2}, {filterAbteilung3}, {Arbeitsmuster}, {Datum}, {Search}, {isSearch}, {searchWithFilter}"); + try + { + userList.DefaultView.RowFilter = ""; + DataTable list = new DataTable("UserList"); + list = userList; + + if (Arbeitsmuster.Contains(";")) + { + switch (Arbeitsmuster.Count(t => t == ';')) + { + case 1: + if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*')"; + break; + + case 2: + if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[2]}*')"; + break; + + case 3: + if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[2]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[3]}*')"; + break; + + default: + break; + } + } + else + { + if (list != null) + list.DefaultView.RowFilter = Arbeitsmuster != "" ? $"Arbeitsmuster like '{Arbeitsmuster}*'" : list.DefaultView.RowFilter; + } + + + if ((filterAbteilung == "%" || filterAbteilung == "") && (filterAbteilung2 == "%" || filterAbteilung2 == "") && (filterAbteilung3 == "%" || filterAbteilung3 == "")) + list = userList; + else if(list.DefaultView.RowFilter == "") + list.DefaultView.RowFilter = $"(Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}')"; + else list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}')"; + + if (list.DefaultView.RowFilter == "") + list.DefaultView.RowFilter = Datum != "" ? list.DefaultView.RowFilter = $"Datum = {String.Format(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, "#{0}#", DateTime.Parse(Datum))}" : list.DefaultView.RowFilter; + else list.DefaultView.RowFilter = Datum != "" ? list.DefaultView.RowFilter += $" AND Datum = {String.Format(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, "#{0}#", DateTime.Parse(Datum.Replace(" 00:00:00", "")))}" : list.DefaultView.RowFilter; + + if (!searchWithFilter && Search == "" && isSearch) list.DefaultView.RowFilter = ""; + else if ((searchWithFilter && Search == "" && isSearch) || !isSearch) list = list; + else if (!searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter == "") + list.DefaultView.RowFilter = $"(Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')"; + else if (!searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter != "") + list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')"; + else if (searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter == "") list.DefaultView.RowFilter = $"(Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')"; + else if (searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter != "") list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')"; + + list.DefaultView.Sort = "Name,Vorname,Abteilung,Datum"; + + + return list; + //if (list != null) + //{ + // errCount = 0; + // return list; + //} + //else return new List(); + } + catch (Exception ex) + { + if (errCount > 1) + { + LogFile.WriteLine(ex.ToString()); + LogFile.WriteLine("Message: " + ex.Message); + if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); + } + return null; + //if (errCount < 5) return await Task.Run(() => CreateList(userList, filterAbteilung, filterAbteilung2, filterAbteilung3, Arbeitsmuster, Datum, Search, searchWithFilter, isSearch)); + //else return new List(); + } + } + } + } + diff --git a/AV-ToolV3/TableCreator.cs b/AV-ToolV3/TableCreator.cs deleted file mode 100644 index 4578a6d..0000000 --- a/AV-ToolV3/TableCreator.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; - -namespace PEP_Tool -{ - class TableCreator - { - static int errCount = 0; - - public static async Task> CreateList(List userList, string filterAbteilung = "%", string filterAbteilung2 = "%", string filterAbteilung3 = "%", string Arbeitsmuster = "", string Datum = "", string Search = "", bool searchWithFilter = false, bool isSearch = false) - { - errCount++; - //System.Diagnostics.Debug.WriteLine($"{filterAbteilung}, {filterAbteilung2}, {filterAbteilung3}, {Arbeitsmuster}, {Datum}, {Search}, {isSearch}, {searchWithFilter}"); - try - { - var list = ((filterAbteilung == "%" || filterAbteilung == "") && (filterAbteilung2 == "%" || filterAbteilung2 == "") && (filterAbteilung3 == "%" || filterAbteilung3 == "")) ? MainWindow.main.DefaultUserList : userList.Where(p => (p.Abteilung == filterAbteilung || p.Abteilung == filterAbteilung2 || p.Abteilung == filterAbteilung3)).ToList(); - - - if (Arbeitsmuster.Contains(";")) - { - switch (Arbeitsmuster.Count(t => t == ';')) - { - case 1: - if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]))).ToList(); - break; - - case 2: - if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[2]))).ToList(); - break; - - case 3: - if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[2]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[3]))).ToList(); - break; - - default: - break; - } - } - else - { - if (list != null) - list = Arbeitsmuster != "" ? list.Where(p => p.Arbeitsmuster.StartsWith(Arbeitsmuster)).ToList() : list; - } - - if(list != null) list = Datum != "" ? list.Where(p => p.Datum == DateTime.Parse(Datum)).ToList() : list; - - if (!searchWithFilter && Search == "" && isSearch) list = MainWindow.main.DefaultUserList; - else if ((searchWithFilter && Search == "" && isSearch) || !isSearch) list = list; - else if (!searchWithFilter && Search != "" && isSearch) list = userList.Where(p => (p.Name.ToLower().Contains(Search.ToLower()) || p.Vorname.ToLower().Contains(Search.ToLower()))).ToList(); - else if (searchWithFilter && Search != "" && isSearch) if (list != null) list = list.Where(p => (p.Name.ToLower().Contains(Search.ToLower()) || p.Vorname.ToLower().Contains(Search.ToLower()))).ToList(); - - if (list != null) list = list.OrderBy(name => name.Name).ThenBy(vorname => vorname.Vorname).ThenBy(abteilung => abteilung.Abteilung).ThenBy(datum => datum.Datum).ToList(); - - - if (list != null) - { - errCount = 0; - return list; - } - else return new List(); - } - catch (Exception ex) - { - if (errCount > 1) - { - LogFile.WriteLine(ex.ToString()); - LogFile.WriteLine("Message: " + ex.Message); - if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - } - - if (errCount < 5) return await Task.Run(() => CreateList(userList, filterAbteilung, filterAbteilung2, filterAbteilung3, Arbeitsmuster, Datum, Search, searchWithFilter, isSearch)); - else return new List(); - } - } - } -} diff --git a/AV-ToolV3/TableInfo.cs b/AV-ToolV3/TableInfo.cs index 374ec58..466d7d7 100644 --- a/AV-ToolV3/TableInfo.cs +++ b/AV-ToolV3/TableInfo.cs @@ -72,6 +72,18 @@ namespace PEP_Tool } } + public List Schaltung { get; set; } + + private string zugname; + public string ZugName + { + get { return zugname; } + set + { + zugname = value; + OnPropertyChanged(); + } + } public void Clear() diff --git a/AV-ToolV3/Tracker.cs b/AV-ToolV3/Tracker.cs index 0f6f848..5316868 100644 --- a/AV-ToolV3/Tracker.cs +++ b/AV-ToolV3/Tracker.cs @@ -42,40 +42,47 @@ namespace PEP_Tool public static async Task SaveTrack(bool Online) { - var save = await Reader.ReadTimeJSON(); - //var save = new Dictionary(); + var r = new Random(); + await Task.Delay(r.Next(10, 200)); - if (save == null) - save = new Dictionary>(); + var save = await Reader.ReadTimeJSON() +#if DEBUG + ?? new Dictionary>(); +#endif + //var save = ; - if (save.ContainsKey(client)) - save[client] = new Tuple(time, Online, Properties.Settings.Default.Version); - else save.Add(client, new Tuple(time, Online, Properties.Settings.Default.Version)); - if (client == "") return; - - try + if (save != null) + //save = new Dictionary>(); { - var json = Newtonsoft.Json.JsonConvert.SerializeObject(save); - //json = await Crypto.EncryptString(json); - byte[] jsonB = new UTF8Encoding(true).GetBytes(json); + if (save.ContainsKey(client)) + save[client] = new Tuple(time, Online, Properties.Settings.Default.Version); + else save.Add(client, new Tuple(time, Online, Properties.Settings.Default.Version)); + if (client == "") return; - using (var fs = Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Track.json", System.IO.FileMode.Open, System.IO.FileAccess.Write, System.IO.FileShare.Read))//Write | System.IO.FileShare.Delete + try { - if (fs != null) + var json = Newtonsoft.Json.JsonConvert.SerializeObject(save); + //json = await Crypto.EncryptString(json); + byte[] jsonB = new UTF8Encoding(true).GetBytes(json); + + + using (var fs = await Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Track.json", System.IO.FileMode.Open, System.IO.FileAccess.Write, System.IO.FileShare.Read))//Write | System.IO.FileShare.Delete { - fs.SetLength(0); - await fs.WriteAsync(jsonB, 0, jsonB.Length); + if (fs != null) + { + fs.SetLength(0); + await fs.WriteAsync(jsonB, 0, jsonB.Length); + } + else fs.Dispose(); } - else fs.Dispose(); + } + catch (Exception ex) + { + LogFile.WriteLine(ex); } } - catch (Exception ex) - { - LogFile.WriteLine(ex); - } - } } } diff --git a/AV-ToolV3/Writer.cs b/AV-ToolV3/Writer.cs index 2f4a073..24d89e7 100644 --- a/AV-ToolV3/Writer.cs +++ b/AV-ToolV3/Writer.cs @@ -10,60 +10,84 @@ namespace PEP_Tool public static class Writer { static int errCount = 0; + static bool ready = true; - public static FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) + public static async Task WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) { - var err = false; + ready = false; + + var err = false; FileStream fs = null; - for (int numTries = 0; numTries < 50; numTries++) - { - fs = null; - try + var r = new Random(); + + for (int numTries = 0; numTries < 50; numTries++) { - if(err && errCount > 5) LogFile.WriteLine(access.ToString() + "error #" + errCount + ": " + Path.GetFileName(fullPath)); - fs = new FileStream(fullPath, mode, access, share); - - if (err && errCount > 5) LogFile.WriteLine(access.ToString() + " done" + ": " + Path.GetFileName(fullPath)); - - err = false; - - errCount = 0; - return fs; - } - catch (IOException ex) - { - errCount++; - //LogFile.WriteLine($"{Environment.MachineName}: {access.ToString()} denied: {Path.GetFileName(fullPath)}\n\nDies ist das {errCount}. vorkommen\n\n"); - //LogFile.WriteLine(ex.ToString()); - //LogFile.WriteLine("Message: " + ex.Message); - //if(ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); - err = true; - if (fs != null) + fs = null; + try { - fs.Dispose(); + await Task.Delay(r.Next(5, 100)); + + + if (err && errCount > 20) + { + LogFile.WriteLine(access.ToString() + "error #" + errCount + ": " + Path.GetFileName(fullPath)); + await Task.Delay(r.Next(200, 1000)); + } + + fs = new FileStream(fullPath, mode, access, share); + + if (err && errCount > 20) LogFile.WriteLine(access.ToString() + " done" + ": " + Path.GetFileName(fullPath)); + + err = false; + + errCount = 0; + ready = true; + return fs; } - System.Threading.Thread.Sleep(500); - } - catch(Exception exc) - { - //LogFile.WriteLine(Environment.MachineName + ": " + access.ToString() + " denied" + ": " + Path.GetFileName(fullPath)); - //LogFile.WriteLine(exc.ToString()); - //LogFile.WriteLine("Message: " + exc.Message); - //if (exc.InnerException != null) LogFile.WriteLine("InnerException: " + exc.InnerException); - err = true; - if (fs != null) + catch (IOException ex) { - fs.Dispose(); + await Task.Delay(r.Next(5, 100)); + errCount++; + System.Diagnostics.Debug.WriteLine("Writer_IOException: " + DateTime.Now.TimeOfDay); + //LogFile.WriteLine($"{Environment.MachineName}: {access.ToString()} denied: {Path.GetFileName(fullPath)}\n\nDies ist das {errCount}. vorkommen\n\n"); + //LogFile.WriteLine(ex.ToString()); + //LogFile.WriteLine("Message: " + ex.Message); + //if(ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException); + err = true; + if (fs != null) + { + fs.Dispose(); + } + + await Task.Delay(r.Next(200, 500)); + + ready = true; } - System.Threading.Thread.Sleep(500); + catch (Exception exc) + { + //LogFile.WriteLine(Environment.MachineName + ": " + access.ToString() + " denied" + ": " + Path.GetFileName(fullPath)); + //LogFile.WriteLine(exc.ToString()); + //LogFile.WriteLine("Message: " + exc.Message); + //if (exc.InnerException != null) LogFile.WriteLine("InnerException: " + exc.InnerException); + err = true; + if (fs != null) + { + fs.Dispose(); + } + await Task.Delay(r.Next(200, 500)); + + ready = true; + } + } - } + //fs.Dispose(); + if (err) System.Windows.MessageBox.Show("Daten konnten nicht geschrieben werden!\nBitte erneut versuchen\n\nWenn dieser Fehler mehrmals direkt hintereinander auftritt, bitte an Marcus Bachler wenden.", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning, System.Windows.MessageBoxResult.OK); - fs.Dispose(); - if (err) System.Windows.MessageBox.Show("Daten konnten nicht geschrieben werden!\nBitte erneut versuchen\n\nWenn dieser Fehler mehrmals direkt hintereinander auftritt, bitte an Marcus Bachler wenden.", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning, System.Windows.MessageBoxResult.OK); - return null; + ready = true; + return null; + } } } diff --git a/AV-ToolV3/Zugzuweisung.xaml b/AV-ToolV3/Zugzuweisung.xaml new file mode 100644 index 0000000..948c966 --- /dev/null +++ b/AV-ToolV3/Zugzuweisung.xaml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +