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/KTOverview.xaml.cs b/AV-ToolV3/KTOverview.xaml.cs
new file mode 100644
index 0000000..ad274fe
--- /dev/null
+++ b/AV-ToolV3/KTOverview.xaml.cs
@@ -0,0 +1,97 @@
+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.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace PEP_Tool
+{
+ ///
+ /// Interaktionslogik für KTOverview.xaml
+ ///
+ public partial class KTOverview : Window
+ {
+ public System.Data.DataTable Overview { get; private set; } = new System.Data.DataTable("Overview");
+
+ public KTOverview()
+ {
+ InitializeComponent();
+
+ var abtFilterList = MainWindow.main.AbteilungsNamen.Select(p => p.Value.Item2).Distinct().ToList();
+ //abtFilterList.Insert(0, "");
+ abtFilterList.Sort();
+ cBFilterAbteilung.ItemsSource = abtFilterList;
+
+ dGView.DataContext = Overview;
+
+ SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s`", Overview);
+
+ System.Data.DataTable dt = SQL.ReadSQL($"SELECT Min(str_to_date(Datum, '%Y-%m-%d')), max(str_to_date(Datum, '%Y-%m-%d')) from `schaltung`").Result;
+
+ dPDate.DisplayDateStart = Convert.ToDateTime(dt.Rows[0].ItemArray[0].ToString());
+ dPDate.DisplayDateEnd = Convert.ToDateTime(dt.Rows[0].ItemArray[1].ToString());
+ }
+
+ private async void cBFilterAbteilung_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ System.Diagnostics.Debug.WriteLine(cBFilterAbteilung.SelectedItem);
+
+ if (dPDate.SelectedDate == null && (cBFilterAbteilung.SelectedItem == "" || cBFilterAbteilung.SelectedItem == null))
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s`", Overview);
+ else if(dPDate.SelectedDate == null)
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Abteilung = '{cBFilterAbteilung.SelectedItem}'", Overview);
+ else
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Abteilung = '{cBFilterAbteilung.SelectedItem}' AND Datum = '{Convert.ToDateTime(dPDate.SelectedDate).ToString("yyyy-MM-dd")}'", Overview);
+ }
+
+ private async void DPDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (dPDate.SelectedDate == null && (cBFilterAbteilung.SelectedItem == "" || cBFilterAbteilung.SelectedItem == null))
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s`", Overview);
+ else
+ {
+ if (cBFilterAbteilung.SelectedItem != "" && cBFilterAbteilung.SelectedItem != null)
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Datum = '{Convert.ToDateTime(dPDate.SelectedDate).ToString("yyyy-MM-dd")}' AND Abteilung = '{cBFilterAbteilung.SelectedItem}'", Overview);
+ else
+ await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Datum = '{Convert.ToDateTime(dPDate.SelectedDate).ToString("yyyy-MM-dd")}'", Overview);
+
+ }
+ }
+
+ private void BtnDatePlus_Click(object sender, RoutedEventArgs e)
+ {
+ if (dPDate.SelectedDate < dPDate.DisplayDateEnd)
+ dPDate.SelectedDate = dPDate.SelectedDate + TimeSpan.FromDays(1);
+ }
+
+ private void BtnDateMinus_Click(object sender, RoutedEventArgs e)
+ {
+ if (dPDate.SelectedDate > dPDate.DisplayDateStart)
+ dPDate.SelectedDate = dPDate.SelectedDate - TimeSpan.FromDays(1);
+ }
+
+ private void BtnDateAll_Click(object sender, RoutedEventArgs e)
+ {
+ dPDate.SelectedDate = null;
+ }
+
+ private void BtnToday_Click(object sender, RoutedEventArgs e)
+ {
+ dPDate.SelectedDate = DateTime.Now.Date;
+ }
+
+ private void BtnOK_Click(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+
+ }
+}
diff --git a/AV-ToolV3/LogFile.cs b/AV-ToolV3/LogFile.cs
index a4e60c3..2fbbc43 100644
--- a/AV-ToolV3/LogFile.cs
+++ b/AV-ToolV3/LogFile.cs
@@ -23,7 +23,7 @@ namespace PEP_Tool
// fs.WriteAsync(t, (int)fs.Length, t.Count());
//}
- File.AppendAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
+ WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
@@ -36,7 +36,7 @@ namespace PEP_Tool
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"));
- File.AppendAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
+ WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
@@ -49,7 +49,7 @@ namespace PEP_Tool
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"));
- File.AppendAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
+ WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
@@ -62,7 +62,7 @@ namespace PEP_Tool
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"));
- File.AppendAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
+ WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
@@ -75,11 +75,42 @@ namespace PEP_Tool
try
{
if (!Directory.Exists(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"))) Directory.CreateDirectory(Path.GetDirectoryName(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt"));
- File.AppendAllText(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
+ WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Log.txt", $"{DateTime.Now} v{Properties.Settings.Default.Version} {Environment.MachineName} {Environment.UserDomainName}:{Environment.NewLine}{Environment.NewLine} {Text.ToString()}{Environment.NewLine}{Environment.NewLine}");
}
catch (Exception)
{
}
}
+
+ public static bool IsFileReady(string filename)
+ {
+ // If the file can be opened for exclusive access it means that the file
+ // is no longer locked by another process.
+ try
+ {
+ using (FileStream inputStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None))
+ return inputStream.Length > 0;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+
+
+ public static void WaitForFile(string filename, string Text)
+ {
+ //This will lock the execution until the file is ready
+ //TODO: Add some logic to make it async and cancelable
+ while (!IsFileReady(filename)) { Task.Delay(20); }
+ try
+ {
+ File.AppendAllText(filename, Text);
+ }
+ catch (Exception)
+ {
+ WaitForFile(filename, Text);
+ }
+ }
}
}
diff --git a/AV-ToolV3/MainWindow.xaml b/AV-ToolV3/MainWindow.xaml
index 071ccfe..f5e9694 100644
--- a/AV-ToolV3/MainWindow.xaml
+++ b/AV-ToolV3/MainWindow.xaml
@@ -19,8 +19,8 @@
-
+
+
@@ -276,8 +276,6 @@
@@ -397,7 +397,7 @@
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -456,34 +474,35 @@
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AV-ToolV3/Zugzuweisung.xaml.cs b/AV-ToolV3/Zugzuweisung.xaml.cs
new file mode 100644
index 0000000..48e624b
--- /dev/null
+++ b/AV-ToolV3/Zugzuweisung.xaml.cs
@@ -0,0 +1,372 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+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.Shapes;
+
+namespace PEP_Tool
+{
+ ///
+ /// Interaktionslogik für Zugzuweisung.xaml
+ ///
+ public partial class Zugzuweisung : Window, INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+
+ private DataTable mACombo = new DataTable();
+ public DataTable MACombo
+ {
+ get { return mACombo; }
+ set { mACombo = value; OnPropertyChanged(); }
+ }
+
+
+ private List mAView = new List();
+ public List MAView
+ {
+ get { return mAView; }
+ set { mAView = value; OnPropertyChanged(); }
+ }
+
+ DataTable schaltList = new DataTable("SchaltList");
+ DataTable schaltListGewerk = new DataTable("SchaltListGewerk");
+ DataTable schaltListTag = new DataTable("SchaltListTag");
+
+ public Zugzuweisung(Button sender = null)
+ {
+ this.DataContext = this;
+ InitializeComponent();
+
+
+ if (sender != null)
+ ZuweisungFromList(sender);
+ else
+ ZuweisungFromMenu();
+
+ dGSchaltList.DataContext = schaltList;
+ dGSchaltListGewerk.DataContext = schaltListGewerk;
+ dGSchaltListTag.DataContext = schaltListTag;
+ }
+
+ private void ZuweisungFromMenu()
+ {
+ lbl1.Visibility = Visibility.Collapsed;
+ lbl2.Visibility = Visibility.Collapsed;
+ btnAddMitarbeiter.Visibility = Visibility.Visible;
+ dPMAFilter.Visibility = Visibility.Visible;
+ cBGewerke.Visibility = Visibility.Visible;
+ }
+
+ object sending;
+ object buttonDatum;
+ private async void ZuweisungFromList(Button sender)
+ {
+ sending = sender;
+
+ dPMAFilter.Visibility = Visibility.Collapsed;
+ cBGewerke.Visibility = Visibility.Collapsed;
+ btnAddMitarbeiter.Visibility = Visibility.Collapsed;
+ lbl1.Visibility = Visibility.Visible;
+ lbl2.Visibility = Visibility.Visible;
+
+ var x = (sender);
+ var y = x.DataContext as System.Data.DataRowView;
+ var z = y.Row.ItemArray[0];
+ buttonDatum = y.Row.ItemArray[4];
+ var schicht = y.Row.ItemArray[8].ToString().Substring(0, 2);
+
+ lblDate.Text = Convert.ToDateTime(buttonDatum).ToShortDateString();
+
+ switch (schicht)
+ {
+ case "MF":
+ cBSchicht.SelectedIndex = 0;
+ break;
+ case "MT":
+ cBSchicht.SelectedIndex = 0;
+ break;
+ case "MS":
+ cBSchicht.SelectedIndex = 1;
+ break;
+ case "MN":
+ cBSchicht.SelectedIndex = 2;
+ break;
+ default:
+ cBSchicht.SelectedIndex = 0;
+ break;
+ }
+
+ if (schicht == "MF" || schicht == "MT")
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+ else
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+
+ //schaltList = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE ZugName = '{tbName.Text}'", schaltList);
+ schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}'", schaltListTag);
+
+ MAView = Helper.DataTableToGewerk(MACombo);
+ }
+
+
+ bool resultChanged = false;
+ private void BtnOK_Click(object sender, RoutedEventArgs e)
+ {
+ this.Close();
+ }
+
+ private async void BtnAdd_Click(object sender, RoutedEventArgs e)
+ {
+ DateTime date = DateTime.Now;
+ if (dPSchaltVon.Value.HasValue)
+ {
+ date = dPSchaltVon.Value.Value;
+
+ if (dPSchaltVon.Value.Value >= dPSchaltBis.Value.Value)
+ {
+ MessageBox.Show("Startzeit größer als Endzeit", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+ }
+ else
+ {
+ MessageBox.Show("Kein gültiges Datum gewählt", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+
+ li.Visibility = Visibility.Visible;
+
+ await Task.Delay(50);
+
+
+ await SQL.WriteSQL($"INSERT INTO `schaltung` (ZugName,Datum,Start,Ende,Zustand,Grund,AnzahlMA,Abteilung) VALUES ('{tbName.Text}','{date.ToString("yyyy-MM-dd")}','{dPSchaltVon.Text}','{dPSchaltBis.Text}','{cbSchaltzustand.Text}','{tbGrund.Text}','{cBAnzahlMA.SelectedValue.ToString()}','{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}')");
+
+
+ schaltList = await SQL.ReadSQL($"Select Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE ZugName = '{tbName.Text}'", schaltList);
+ schaltListGewerk = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Abteilung = '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' AND Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListGewerk);
+ schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListTag);
+
+ var schicht = "";
+
+ switch (cBSchicht.SelectedIndex)
+ {
+ case 0:
+ schicht = "MF";
+ break;
+ case 1:
+ schicht = "MS";
+ break;
+ case 2:
+ schicht = "MN";
+ break;
+ default:
+ schicht = "MF";
+ break;
+ }
+
+ if (schicht == "MF" || schicht == "MT")
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+ else
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+
+ MAView = Helper.DataTableToGewerk(MACombo);
+
+
+ li.Visibility = Visibility.Collapsed;
+ }
+
+
+
+ private void DPMAFilter_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
+ {
+ throw new NotImplementedException();
+ }
+
+ private async void DGSchaltList_PreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ var dg = sender as DataGrid;
+ var row = dg.SelectedItem as DataRowView;
+ var arr = row.Row.ItemArray;
+
+ if (e.Key == Key.Delete)
+ {
+ li.Visibility = Visibility.Visible;
+
+ await Task.Delay(50);
+
+
+ //await SQL.WriteSQL($"UPDATE `mitarbeiter_change` `m` left join `schaltung` `s` ON m.mitarbeiter_static_PersNr = s.mitarbeiter_static_PersNr AND s.Datum = m.Datum SET `ZugNameB` = (select s.ZugName WHERE s.mitarbeiter_static_PersNr = '{arr[8]}' AND s.Start > DATE_FORMAT(NOW(), '%d.%m. %H:%i')) WHERE (s.ZugName = '{arr[1]}' AND s.Datum = '{Convert.ToDateTime(arr[3]).ToString("yyyy-MM-dd")}' AND s.Start = '{arr[4]}' AND s.Ende = '{arr[5]}' AND s.Zustand = '{arr[6]}' AND s.Grund = '{arr[7]}')");
+ await SQL.WriteSQL($"DELETE FROM `schaltung` WHERE (`Abteilung` = '{arr[0]}' AND `ZugName` = '{arr[2]}' AND `Datum` = '{Convert.ToDateTime(arr[3].ToString().Split(' ')[0] + "." + DateTime.Now.Year).ToString("yyyy-MM-dd")}' AND `Start` = '{arr[3]}' AND `Ende` = '{arr[4]}' AND `Zustand` = '{arr[5]}' AND `Grund` = '{arr[6]}')");
+
+ //schaltList = await SQL.ReadSQL($"Select Name,ZugName,Start,Ende,Zustand,Grund FROM `mitarbeiter_static` `m` left join `schaltung` `s` ON m.PersNr = s.mitarbeiter_static_PersNr WHERE {pers}", schaltList);
+ li.Visibility = Visibility.Collapsed;
+ }
+ }
+
+ private async void DGMAView_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (dGMAView.SelectedIndex != -1)
+ {
+ var i = Convert.ToInt16((((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).MAVerfuegbar));
+ var a = new int[i];
+
+ for (var j = 1; j != i + 1; ++j)
+ {
+ a[j - 1] = j;
+ }
+
+ cBAnzahlMA.ItemsSource = a;
+
+ lblPlanungGewerk.Text = $"Planung für Gewerk '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' am {Convert.ToDateTime(buttonDatum).ToShortDateString()}:";
+ schaltListGewerk = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE Abteilung = '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' AND Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListGewerk);
+ }
+ }
+
+
+ private async void TbName_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ if (tbName.Text != "" && char.IsDigit(tbName.Text[0]))
+ {
+ tbName.Text = "Tz " + tbName.Text;
+ tbName.CaretIndex = tbName.Text.Length;
+ }
+
+ if (System.Text.RegularExpressions.Regex.IsMatch(tbName.Text, @".{1,3}\d\d\d+"))
+ {
+ schaltList = await SQL.ReadSQL($"Select Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM `schaltung` `s` WHERE ZugName = '{tbName.Text}'", schaltList);
+ lblPlanungTz.Text = $"Planung für Triebzug '{tbName.Text}':";
+ }
+ else
+ {
+ schaltList.Clear();
+ lblPlanungTz.Text = $"Planung für Triebzug:";
+ }
+ }
+
+
+ private void CBAnzahlMA_DropDownOpened(object sender, EventArgs e)
+ {
+ if (cBAnzahlMA.Items.Count == 0) cBAnzahlMA.ItemsSource = new string[1] { "Bitte zuerst Gewerk wählen" };
+ }
+
+ private async void CBSchicht_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ var schicht = "";//((DataRowView)((Button)sending).DataContext).Row.ItemArray[8].ToString().Substring(0, 2);
+
+ switch (cBSchicht.SelectedIndex)
+ {
+ case 0:
+ schicht = "MF";
+ break;
+ case 1:
+ schicht = "MS";
+ break;
+ case 2:
+ schicht = "MN";
+ break;
+ default:
+ schicht = "MF";
+ break;
+ }
+
+ DataTable dt = null;
+ if (schicht == "MF" || schicht == "MT")
+ dt = await SQL.ReadSQL($"SELECT Min(str_to_date(REPLACE(Beginn, '*', ':'), '%H:%i')), max(str_to_date(REPLACE(Gehen, '*', ':'), '%H:%i')) from mitarbeiter_change where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (Arbeitsmuster like '%{schicht}%' OR Arbeitsmuster like '%MT%')");
+ else
+ dt = await SQL.ReadSQL($"SELECT Min(str_to_date(REPLACE(Beginn, '*', ':'), '%H:%i')), max(str_to_date(REPLACE(Gehen, '*', ':'), '%H:%i')) from mitarbeiter_change where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND Arbeitsmuster like '%{schicht}%'");
+
+ var from = dt.Rows[0].ItemArray[0].ToString();
+ var until = dt.Rows[0].ItemArray[1].ToString();
+
+ dPSchaltVon.Value = null;
+ dPSchaltBis.Value = null;
+ dPSchaltVon.Minimum = null;
+ dPSchaltBis.Maximum = DateTime.MaxValue;
+
+ if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(until)))
+ {
+ if (TimeSpan.Parse(from) > TimeSpan.Parse(until))
+ {
+ dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(from);
+ dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.FromDays(1) + TimeSpan.Parse(until);
+ }
+ else
+ {
+ dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(from);
+ dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(until);
+ }
+ }
+ else
+ {
+ dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum);
+ dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.FromDays(2);
+ }
+
+ dPSchaltVon.Value = dPSchaltVon.Minimum.Value;
+ dPSchaltBis.Value = dPSchaltBis.Maximum.Value;
+
+ if (schicht == "MF" || schicht == "MT")
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+ else
+ MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) From `mitarbeiter_static` `m` left join `mitarbeiter_change` `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung");
+
+ MAView = Helper.DataTableToGewerk(MACombo);
+ }
+
+
+
+
+
+
+ private void OnPropertyChanged([CallerMemberName] string propertyName = null)
+ {
+ System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName);
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+ public class SearchFilterConverter : IMultiValueConverter
+ {
+ public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ return $"{values[0].ToString()} {values[1].ToString()}";
+ }
+ public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class Gewerk
+ {
+ public string Abteilung { get; set; }
+ public string MAAnwesend { get; set; }
+ public string MAVerplant { get; set; }
+ public string MAVerfuegbar { get; set; }
+ }
+}
diff --git a/AV-ToolV3/packages.config b/AV-ToolV3/packages.config
index f1012d2..bead055 100644
--- a/AV-ToolV3/packages.config
+++ b/AV-ToolV3/packages.config
@@ -1,11 +1,12 @@
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PEP_ToolProject.sln b/PEP_ToolProject_SQL.sln
similarity index 87%
rename from PEP_ToolProject.sln
rename to PEP_ToolProject_SQL.sln
index 99bc8fc..367ae83 100644
--- a/PEP_ToolProject.sln
+++ b/PEP_ToolProject_SQL.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2026
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEP_Tool", "AV-ToolV3\PEP_Tool.csproj", "{4E161CEA-E5E0-4E4A-9923-64CD9D2BD1F0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEP_Tool_SQL", "AV-ToolV3\PEP_Tool_SQL.csproj", "{4E161CEA-E5E0-4E4A-9923-64CD9D2BD1F0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution