From e0ab181abe48a9c8a1416274b89dc16abdd0f4f8 Mon Sep 17 00:00:00 2001 From: Marcus Date: Wed, 8 Oct 2025 10:11:18 +0200 Subject: [PATCH] First Commit --- AV-ToolV3/App.config | 30 +- AV-ToolV3/App.xaml | 57 ++ AV-ToolV3/Arrow.png | Bin 0 -> 2076 bytes AV-ToolV3/Crypto.cs | 50 ++ AV-ToolV3/Export.cs | 25 +- AV-ToolV3/Helper.cs | 90 +++- AV-ToolV3/KTOverview.xaml | 3 + AV-ToolV3/KTOverview.xaml.cs | 51 +- AV-ToolV3/LogFile.cs | 29 +- AV-ToolV3/MainWindow.xaml | 102 ++-- AV-ToolV3/MainWindow.xaml.cs | 306 ++++++++--- AV-ToolV3/PEP_Tool_SQL.csproj | 84 ++- AV-ToolV3/Properties/Resources.Designer.cs | 2 +- AV-ToolV3/Properties/Settings.Designer.cs | 4 +- AV-ToolV3/Properties/Settings.settings | 2 +- AV-ToolV3/Reader.cs | 24 +- AV-ToolV3/SQL.cs | 221 ++++++-- AV-ToolV3/TableCreater.cs | 8 +- AV-ToolV3/Vorplanung.xaml | 59 ++ AV-ToolV3/Vorplanung.xaml.cs | 27 + AV-ToolV3/XMessageBox.xaml | 15 + AV-ToolV3/XMessageBox.xaml.cs | 90 ++++ AV-ToolV3/Zugzuweisung.xaml | 174 ++++-- AV-ToolV3/Zugzuweisung.xaml.cs | 600 ++++++++++++++++++--- AV-ToolV3/packages.config | 4 + AV-ToolV3/ucAnimatedArrow.xaml | 54 ++ AV-ToolV3/ucAnimatedArrow.xaml.cs | 28 + 27 files changed, 1835 insertions(+), 304 deletions(-) create mode 100644 AV-ToolV3/Arrow.png create mode 100644 AV-ToolV3/Crypto.cs create mode 100644 AV-ToolV3/Vorplanung.xaml create mode 100644 AV-ToolV3/Vorplanung.xaml.cs create mode 100644 AV-ToolV3/XMessageBox.xaml create mode 100644 AV-ToolV3/XMessageBox.xaml.cs create mode 100644 AV-ToolV3/ucAnimatedArrow.xaml create mode 100644 AV-ToolV3/ucAnimatedArrow.xaml.cs diff --git a/AV-ToolV3/App.config b/AV-ToolV3/App.config index 42f27fb..245db7b 100644 --- a/AV-ToolV3/App.config +++ b/AV-ToolV3/App.config @@ -1,35 +1,35 @@ - + -
+
-
+
- + - + - + - - + + - + - + True @@ -38,7 +38,7 @@ 1.0 - 3.0.1 + 4.2.2 0 @@ -91,12 +91,12 @@ - - + + - - + + diff --git a/AV-ToolV3/App.xaml b/AV-ToolV3/App.xaml index e5608fb..f79b780 100644 --- a/AV-ToolV3/App.xaml +++ b/AV-ToolV3/App.xaml @@ -36,6 +36,63 @@ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AV-ToolV3/Arrow.png b/AV-ToolV3/Arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab08f076a31e6c06b1c5675b856a7a4de305a5a GIT binary patch literal 2076 zcmeHI{Xf%dAD^}HH8bB+^OW8Cp3ae{4YzqLWgF$8P&3MNIv9C8bPmhOY)1ESbaR(y zr?HUI4oNwPJoJ*ZF^M=7c51XFi%{}#Z~71JpYQ8+eXh^z{kdM(`~7*nKR;Z*9`|%n zN9{(zU@&zzS7)j`i{$YZP?n#_>2Jp6NhyiyLV?u{;G}YZpp!kwFjzyb+IlEbj#U#} z{gPlX%tJ*e^~T=_gTYi9+?>g@l;HW72mg&btfM@w>v=k=^Vj*9J{)AvCKiKnol4VC zUJ}AJFK1dgPp5C^w*xVI+vqyAWAMVBpG9fU9G90Ic9xpqPEF1y*REZa*8M{+rC2oa z;$+Y4=MKv%%P))W;nc`O4)2p4C9gJqTzx8Dopsz=R-rkinB=pQ9Feo5=Tc_hZoM<} zPCw+Tbl&d~ZTjk>`(bKA+A(vcis1oV^8JM;|11ExPXZ@9KJ9OJXxkmsICap3dBgxe zVRBi(vYPwFFRQ+wFuwe{Wa7{8$61`3oug`OV-#mU;DvN2%dVllc%&QY(OgtMd)fvI zXoB2J?XAoY-?y)KK*e{a4z9iG>ItaNJyj@+G15jzB_BrKtPBkim^;K*EW^U<7&e!^ z*6s#=xsDcHrhM#N7OipUJ6P<~+3?UEg|T`77U7Kr^gwPw=Cp6=hegzhB3t@PaIog=`n9ZRhrD2=ZxH^gK?PSlhL?MMk53PopQ?32~0}uVN zyRjm1(aaY-b^^j54ZWRby-gin%+ShXUs>qCx!3M5<<;;<8 zVq@ZE{kkJQ3_hv2NG6P&+wL+Ll~FQGQ*a3%3W*uxD1|u;K!i5IE82{J9O&+bp=tQI zOUSPL-l#_(!OuiMr0Y($*lM>obtBFcp*VJ#HG!e#s-IPW)ERmh`R6g%RaH)OSkO9h*4YYeVp0gsTS z*HTCG9YZ_~ieA32TKV<4@_4~*dk>Mk)z6qCT~V~P4M{v?mAdgPMlOEA$n@eqYq>4t zlbHJVK@Nmok0>(-6dPmh4_W!>?F-Eec&(+?8^Gakn59G#E z)8!tX*d^{mk{=Ko(9!_n{XrjQzc&g#fy36QlT9fbM{&+}S3=WRYfZq1<3jEv(7d4-eSM^ok`ERr(^5vk2O6eQv|Bys z+|uXucMY#PI>!1zF|(-Hx~-~Li^P}QiL)^UeKowy0J&~SEEVGW>r^o- zQj<;z$C2H&L@$(QL5QqUL%O~e+7A!CC(HloW=-myssqtlz%7Mzwy!CurIE`{SLah9 zyuXeSFg7%V?7l{nmk5L)2(QJx`(Bva;{)EV4utSO=Z@_aH*BbAGMZ^Di`10G%u;sx z6Fe0XDxTi>>jknqM%P-0(X@R4{{{Q~p99WUui|T#V zfFs0rEd1@VvL||Ty)Jr#9yP;)h$6zW-O|@DRegMZ6Jd4IhR>J&k*+AY9rkptqnu{{ E7kyia_y7O^ literal 0 HcmV?d00001 diff --git a/AV-ToolV3/Crypto.cs b/AV-ToolV3/Crypto.cs new file mode 100644 index 0000000..16eaa30 --- /dev/null +++ b/AV-ToolV3/Crypto.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace PEP_Tool +{ + internal class Crypto + { + public static byte[] GetHashKey(string hashKey, string Salt = "D99CFBD250C45D34B954C74E2054A282") + { + // Initialize + UTF8Encoding encoder = new UTF8Encoding(); + // Get the salt + string salt = !string.IsNullOrEmpty(Salt) ? Salt : "I am a nice little salt"; + byte[] saltBytes = encoder.GetBytes(salt); + // Setup the hasher + Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(hashKey, saltBytes); + // Return the key + return rfc.GetBytes(16); + } + public static string Decrypt(byte[] key, string encryptedString) + { + // Initialize + AesManaged decryptor = new AesManaged(); + byte[] encryptedData = Convert.FromBase64String(encryptedString); + // Set the key + decryptor.Key = key; + decryptor.IV = key; + // create a memory stream + using (MemoryStream decryptionStream = new MemoryStream()) + { + // Create the crypto stream + using (CryptoStream decrypt = new CryptoStream(decryptionStream, decryptor.CreateDecryptor(), CryptoStreamMode.Write)) + { + // Encrypt + decrypt.Write(encryptedData, 0, encryptedData.Length); + decrypt.Flush(); + decrypt.Close(); + // Return the unencrypted data + byte[] decryptedData = decryptionStream.ToArray(); + return UTF8Encoding.UTF8.GetString(decryptedData, 0, decryptedData.Length); + } + } + } + } +} diff --git a/AV-ToolV3/Export.cs b/AV-ToolV3/Export.cs index 091b665..3e72a57 100644 --- a/AV-ToolV3/Export.cs +++ b/AV-ToolV3/Export.cs @@ -18,13 +18,34 @@ namespace PEP_Tool MainWindow.main.BarVisibility = System.Windows.Visibility.Visible; MainWindow.main.BarMax = l.Rows.Count; - sb.AppendLine($"Name;Vorname;Datum;Abteilung;Zuweisung;Bemerkung;" + Environment.NewLine); + sb.AppendLine($"Name;Vorname;Datum;Kommen;Gehen;Schicht;Lizenzen;Abteilung;Zuweisung;Bemerkung;" + Environment.NewLine); int count = 0; foreach (System.Data.DataRow user in l.Rows) { + string Schicht = ""; + switch(user.ItemArray[8].ToString().Substring(0, 2)) + { + case "MT": + Schicht = "Tagschicht"; + break; + case "MF": + Schicht = "Frühschicht"; + break; + case "MS": + Schicht = "Spätschicht"; + break; + case "MN": + Schicht = "Nachtschicht"; + break; + default: + Schicht = "Schicht nicht erkannt"; + break; + } + + count++; - sb.AppendLine($"{user.ItemArray[1]};{user.ItemArray[2]};{user.ItemArray[4].ToString().Split(' ')[0]};{user.ItemArray[3]};{user.ItemArray[9]};{user.ItemArray[10]};"); + sb.AppendLine($"{user.ItemArray[1]};{user.ItemArray[2]};{user.ItemArray[4].ToString().Split(' ')[0]};{user.ItemArray[5]};{user.ItemArray[6]};{Schicht};{user.ItemArray[12]} Lizenzen;{user.ItemArray[3]};{user.ItemArray[9]};{user.ItemArray[10].ToString().Replace('\n', ' ').Replace('\r', ' ')};"); MainWindow.main.BarValue = count; } diff --git a/AV-ToolV3/Helper.cs b/AV-ToolV3/Helper.cs index 439a374..e5a8a5a 100644 --- a/AV-ToolV3/Helper.cs +++ b/AV-ToolV3/Helper.cs @@ -3,12 +3,51 @@ using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media; namespace PEP_Tool { public static class Helper { + + public static Parent FindParent(DependencyObject child) + where Parent : DependencyObject + { + DependencyObject parentObject = child; + + //We are not dealing with Visual, so either we need to fnd parent or + //get Visual to get parent from Parent Heirarchy. + while (!((parentObject is System.Windows.Media.Visual) + || (parentObject is System.Windows.Media.Media3D.Visual3D))) + { + if (parentObject is Parent || parentObject == null) + { + return parentObject as Parent; + } + else + { + parentObject = (parentObject as FrameworkContentElement).Parent; + } + } + + //We have not found parent yet , and we have now visual to work with. + parentObject = VisualTreeHelper.GetParent(parentObject); + + //check if the parent matches the type we're looking for + if (parentObject is Parent || parentObject == null) + { + return parentObject as Parent; + } + else + { + //use recursion to proceed with next level + return FindParent(parentObject); + } + } + public static string RemoveSpecialCharacters(string str) { StringBuilder sb = new StringBuilder(); @@ -37,7 +76,7 @@ namespace PEP_Tool key == System.Windows.Input.Key.System || key == System.Windows.Input.Key.Play) b = true; else - b = false; // the key will sappressed + b = false; // the key will suppressed return b; } @@ -137,6 +176,7 @@ namespace PEP_Tool } } + public static List DataTableToGewerk(System.Data.DataTable dataTable) { List x = new List(); @@ -154,6 +194,37 @@ namespace PEP_Tool return x; } + + + public static int returnIndexForString(string input) + { + if (input.Contains("0") && !Regex.IsMatch(input, "[1-9]")) return 0; + else if (input.Contains("110")) return 1; + else if (input.Contains("670")) return 2; + else if (input.Contains("15")) return 3; + else if (input.Contains("un")) return 4; + else return -1; + } + + + public static IEnumerable GetDataGridRows(System.Windows.Controls.DataGrid grid) + { + var itemsSource = grid.ItemsSource; + if (null == itemsSource) { yield break; } + foreach (var item in itemsSource) + { + var row = grid.ItemContainerGenerator.ContainerFromItem(item) as System.Windows.Controls.DataGridRow; + if (null != row) yield return row; + } + } + + + public static bool IsWindowOpen(string name = "") where T : System.Windows.Window + { + return string.IsNullOrEmpty(name) + ? System.Windows.Application.Current.Windows.OfType().Any() + : System.Windows.Application.Current.Windows.OfType().Any(w => w.Title.Equals(name)); + } } public class ReplaceDotConverter : System.Windows.Data.IValueConverter @@ -173,4 +244,21 @@ namespace PEP_Tool throw new NotImplementedException(); } } + + public class IndexConverter : System.Windows.Data.IValueConverter + { + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + if (value != null) + { + return ((int)value + 1).ToString().Replace("0", "--"); + } + else return ""; + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotImplementedException(); + } + } } diff --git a/AV-ToolV3/KTOverview.xaml b/AV-ToolV3/KTOverview.xaml index 528aab9..fa56580 100644 --- a/AV-ToolV3/KTOverview.xaml +++ b/AV-ToolV3/KTOverview.xaml @@ -199,6 +199,7 @@ + @@ -216,5 +217,7 @@ - - + + @@ -330,7 +341,7 @@ - + @@ -338,7 +349,15 @@ - + + + + + + + + + @@ -379,25 +398,35 @@