diff --git a/ZKuP/AddCardUser.xaml b/ZKuP/AddCardUser.xaml
index 1c65db6..5f9490c 100644
--- a/ZKuP/AddCardUser.xaml
+++ b/ZKuP/AddCardUser.xaml
@@ -1,27 +1,35 @@
-
+ Title="Kartenbenutzer" MinHeight="450" Height="450" Width="594" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
-
+
+
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/ZKuP/AddCardUser.xaml.cs b/ZKuP/AddCardUser.xaml.cs
index 4eaf782..56ad7dd 100644
--- a/ZKuP/AddCardUser.xaml.cs
+++ b/ZKuP/AddCardUser.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using MahApps.Metro.Controls;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -18,37 +19,69 @@ namespace ZKuP
///
/// Interaktionslogik für AddCardUser.xaml
///
- public partial class AddCardUser : Window
+ public partial class AddCardUser : MetroWindow
{
string _user = "";
string _ansprechpartnerFirma = "";
+ bool _isBesucher = false;
List comboList = new List() { "Grün", "Rot", "Gerätewagen" };
List comboListNurRot = new List() { "Rot" };
+ List mitarbeiterList = new List();
+ List telList = new List();
+
byte[] _signature = null;
string _ap = "";
bool _needTel = true;
- public AddCardUser(string user = "", bool isBesucher = false, string nr = "", string ap = "", bool needTel = true)
+ public AddCardUser(string user = "", bool isBesucher = false, string count = "", string ap = "", bool needTel = true, bool hasEinweisung = false, string firma = "", string telnr = "", string idFirma = "")
{
_user = user;
_ap = ap;
_needTel = needTel;
+ _isBesucher = isBesucher;
InitializeComponent();
- this.Title = "Karten ausgeben - " + nr;
+ Helper.InitSerial();
+ Helper.DataReceived += Helper_DataReceived;
- //cbColor.ItemsSource = isBesucher ? comboListNurRot : comboList;
- cbColor.ItemsSource = comboListNurRot;
+ this.Title = "Karten ausgeben - " + count;
+
+ lblFirma.Text = isBesucher ? "Firma" : "Firma*";
+ lblTelnr.Text = needTel ? "Telefonnummer*" : "Telefonnummer";
+
+ cbColor.ItemsSource = isBesucher ? comboListNurRot : comboList;
+ cbColor.ItemsSource = hasEinweisung ? comboList : comboListNurRot;
+ //cbColor.ItemsSource = comboListNurRot;
+
+ if (!isBesucher)
+ {
+ tbFirma.Text = firma;
+ mitarbeiterList = SQL.ReadSingleValue($"SELECT Personen FROM {MainWindow.table}.firmenPeople WHERE idFirmen = '{idFirma}'").Split(';').ToList();
+ telList = SQL.ReadSingleValue($"SELECT TelNr FROM {MainWindow.table}.firmenPeople WHERE idFirmen = '{idFirma}'").Split(';').ToList();
+ if (!mitarbeiterList.Contains(user)) mitarbeiterList.Add(user);
+ if (!telList.Contains(telnr)) telList.Add(telnr);
+
+ tbUser.ItemsSource = mitarbeiterList;
+ tbTelnr.ItemsSource = telList;
+
+ if (!string.IsNullOrWhiteSpace(count))
+ {
+ var selection = Convert.ToInt16(count.Split('/')[0]) - 2;
+ tbUser.SelectedIndex = selection;
+ tbTelnr.SelectedIndex = selection;
+ }
+ }
if (!user.Contains("["))
{
- tbUser.Text = user;
+ if(tbUser.SelectedIndex == -1) tbUser.Text = user;
try
{
if (user != "")
- tbTelnr.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.firmen WHERE Name='{user}'");
+ tbTelnr.Text = telnr;
+ //tbTelnr.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.firmen WHERE Name='{user}'");
}
catch (Exception)
{
@@ -63,15 +96,41 @@ namespace ZKuP
}
}
+ private void Helper_DataReceived(object sender, string e)
+ {
+ var text = "";
+ Dispatcher.Invoke(() => text = tbNummer.Text = e.Split('=')[0]);
+
+ if (!string.IsNullOrWhiteSpace(text))
+ {
+ var farbe = SQL.ReadSingleValue($"SELECT Farbe FROM {MainWindow.table}.kartennummern WHERE Kartennummer='{text}'");
+
+ Dispatcher.Invoke(() =>
+ {
+ switch (farbe)
+ {
+ case "1":
+ cbColor.SelectedValue = "Rot";
+ break;
+ case "2":
+ cbColor.SelectedValue = "Grün";
+ break;
+ }
+ });
+ }
+ }
+
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
- if (tbNummer.Text == "")
+ if (string.IsNullOrWhiteSpace(tbNummer.Text))
MessageBox.Show(this, "Kartennummer angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else if (cbColor.SelectedIndex == -1)
MessageBox.Show(this, "Kartenfarbe auswählen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (tbUser.Text == "")
- MessageBox.Show(this, "Benutzer angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (_needTel && tbTelnr.Text == "")
+ else if (string.IsNullOrWhiteSpace(tbUser.Text))
+ MessageBox.Show(this, "Person angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (!_isBesucher && string.IsNullOrWhiteSpace(tbFirma.Text))
+ MessageBox.Show(this, "Firma angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (_needTel && string.IsNullOrWhiteSpace(tbTelnr.Text))
MessageBox.Show(this, "Telefonnummer angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else
{
@@ -85,7 +144,7 @@ namespace ZKuP
if (_signature != null)
{
- await SQL.WriteSQL($"REPLACE INTO karten (kartennr,farbe,benutzer,telnr,AusgegebenDurch,AusgegebenTimestamp,Signature,Ansprechpartner) VALUES ('{tbNummer.Text}','{cbColor.SelectedValue.ToString()}','{tbUser.Text}','{tbTelnr.Text}','{Environment.UserName}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', @signature, '{_ap}')", _signature);
+ await SQL.WriteSQL($"REPLACE INTO karten (kartennr,farbe,benutzer,telnr,AusgegebenDurch,AusgegebenTimestamp,Ansprechpartner,Signature) VALUES ('{tbNummer.Text}','{cbColor.SelectedValue.ToString()}','{tbUser.Text}','{tbTelnr.Text}','{Environment.UserName}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{_ap}',@signature)", _signature);
MessageBox.Show(this, "Karte erfolgreich verknüpft", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
@@ -112,9 +171,16 @@ namespace ZKuP
}
- private void tbUser_PreviewTextInput(object sender, TextCompositionEventArgs e)
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
{
- if (tbUser.Text.Length >= 254) e.Handled = true;
+ Helper.CheckWindowIsInScreenSpace(this);
}
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
}
}
diff --git a/ZKuP/AddFirmenList.xaml b/ZKuP/AddFirmenList.xaml
new file mode 100644
index 0000000..0f51fc1
--- /dev/null
+++ b/ZKuP/AddFirmenList.xaml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ZKuP/AddFirmenList.xaml.cs b/ZKuP/AddFirmenList.xaml.cs
new file mode 100644
index 0000000..80a9646
--- /dev/null
+++ b/ZKuP/AddFirmenList.xaml.cs
@@ -0,0 +1,287 @@
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.RightsManagement;
+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 ZKuP
+{
+ ///
+ /// Interaktionslogik für AddVisitorsList.xaml
+ ///
+ public partial class AddFirmenList : MetroWindow
+ {
+ public int GroupID { get; private set; }
+ int width = 0;
+ bool _isEdit = false;
+ int _idFirmen = 0;
+
+ public string Personen { get; set; }
+ public string TelNr { get; set; }
+
+ public AddFirmenList(bool isEdit = false, int idFirmen = 0, int PeopleCount = 0)
+ {
+ InitializeComponent();
+
+
+ if (isEdit)
+ {
+ _isEdit = isEdit;
+ _idFirmen = idFirmen;
+ btnAdd.Visibility = Visibility.Visible;
+
+ BuildWindow(PeopleCount);
+
+ var list = SQL.ReadSingleValue($"SELECT Personen FROM {MainWindow.table}.firmenPeople WHERE idFirmen = '{_idFirmen}'").Split(';');
+
+ if (list.Length > 0)
+ {
+ var boxes = Helper.FindVisualChildren(spGroupPers).Where(p => p.Tag.ToString() == "Name").ToList();
+
+ for (var i = 0; i < boxes.Count(); i++)
+ {
+ if (list.Length > i && !string.IsNullOrWhiteSpace(list[i]))
+ {
+ if (boxes[i].Tag == "Name")
+ boxes[i].Text = list[i];
+ }
+ }
+
+ boxes = Helper.FindVisualChildren(spGroupPers).Where(p => p.Tag.ToString() == "Tel").ToList();
+
+ list = SQL.ReadSingleValue($"SELECT TelNr FROM {MainWindow.table}.firmenPeople WHERE idFirmen = '{_idFirmen}'").Split(';');
+
+ for (var i = 0; i < boxes.Count(); i++)
+ {
+ if (list.Length > i && !string.IsNullOrWhiteSpace(list[i]))
+ {
+ if (boxes[i].Tag == "Tel")
+ boxes[i].Text = list[i];
+ }
+ }
+ }
+ }
+ else
+ {
+ if(PeopleCount > 0)
+ {
+ for (var i = 0; i < PeopleCount; i++)
+ Add();
+ }
+ }
+ }
+
+ private void BuildWindow(int besucherAnzahl)
+ {
+ int maxProSpalte = 10; // Maximale Anzahl an Textfeldern pro Spalte
+
+ // PanelsContainer soll die WrapPanels halten
+ spGroupPers.Children.Clear(); // Vorherige Panels entfernen (falls schon welche existieren)
+
+ // Erstelle die WrapPanels und füge sie dem StackPanel hinzu
+ int columnCount = 2;// (int)Math.Ceiling((double)besucherAnzahl / maxProSpalte);
+
+ //for (int i = 0; i < columnCount; i++)
+ //{
+ WrapPanel wrapPanel = new WrapPanel()
+ {
+ //Orientation = Orientation.Vertical, // Jedes WrapPanel wird vertikal sein
+ Margin = new Thickness(10),
+ Width = 600
+ };
+
+ // Für jedes WrapPanel Textfelder hinzufügen
+ for (int j = 0; j < besucherAnzahl; j++)
+ {
+ var mainPanel = new StackPanel();
+ mainPanel.Orientation = Orientation.Horizontal;
+
+ var sp = new StackPanel();
+ var lbl = new TextBlock() { Text = $"Begleitperson Nr. {j + 1}:", Margin = new Thickness(5), Height = 20 };
+ lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ sp.Children.Add(lbl);
+ var tb = new TextBox() { Tag = "Name", Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
+ ToolTipService.SetInitialShowDelay(tb, 200);
+ MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
+ sp.Children.Add(tb);
+
+ var sp2 = new StackPanel();
+ var lbl2 = new TextBlock() { Text = $"", Margin = new Thickness(5), Height = 20 };
+ lbl2.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ sp2.Children.Add(lbl2);
+ var tb2 = new TextBox() { Tag = "Tel", Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
+ ToolTipService.SetInitialShowDelay(tb2, 200);
+ MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb2, "Telefonnummer");
+ sp2.Children.Add(tb2);
+
+ mainPanel.Children.Add(sp);
+ mainPanel.Children.Add(sp2);
+
+ wrapPanel.Children.Add(mainPanel);
+ }
+
+ // Das WrapPanel zum StackPanel hinzufügen
+ spGroupPers.Children.Add(wrapPanel);
+ //}
+
+ width = (columnCount * 320) + 10;
+ //this.Height = this.MinHeight + (besucherAnzahl * 80);
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ this.Height = spGroupPers.DesiredSize.Height + 80;
+ this.Width = width;
+
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private async void btnSend_Click(object sender, RoutedEventArgs e)
+ {
+ //await SendIt();
+ this.Close();
+ }
+
+ private async Task SendIt()
+ {
+ var textBoxes = Helper.FindVisualChildren(spGroupPers);
+ var person = "";
+
+ foreach (var textBox in textBoxes)
+ {
+ if (textBox.Tag != null && (!string.IsNullOrWhiteSpace(textBox.Text) && textBox.Tag.ToString() == "Name")) person = textBox.Text;
+ else if (textBox.Tag == null) return;
+ //else if (string.IsNullOrWhiteSpace(textBox.Text))
+ //{
+ // MessageBox.Show("Namensfeld muss ausgefüllt werden", "Fehlende Daten", MessageBoxButton.OK, MessageBoxImage.Error);
+ // return;
+ //}
+
+ if (textBox.Tag != null && textBox.Tag.ToString() == "Tel")
+ {
+ //if(!string.IsNullOrWhiteSpace(textBox.Text))
+ //{
+ // MessageBox.Show("Telefonnummer muss ausgefüllt werden", "Fehlende Daten", MessageBoxButton.OK, MessageBoxImage.Error);
+ // return;
+ //}
+
+ Personen += person + ";";
+ TelNr += textBox.Text + ";";
+ }
+ }
+
+ if (Personen != null) Personen = Personen.TrimEnd(';');
+ if (TelNr != null) TelNr = TelNr.TrimEnd(';');
+
+
+ if (Personen != null)
+ {
+ await SQL.CreateAndWriteSQL($"DELETE FROM {MainWindow.table}.firmenPeople WHERE idFirmen = @id", new List()
+ {
+ new MySqlParameter("@id", _idFirmen)
+ });
+
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@id, @personen, @tel)", new List()
+ {
+ new MySqlParameter("@id", _idFirmen),
+ new MySqlParameter("@personen", Personen),
+ new MySqlParameter("@tel", TelNr)
+ });
+
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Begleiter = @anzahl WHERE idFirmen = @id", new List()
+ {
+ new MySqlParameter("@id", _idFirmen),
+ new MySqlParameter("@anzahl", Personen.Split(';').Length)
+ });
+ }
+ }
+
+ private void btnAdd_Click(object sender, RoutedEventArgs e)
+ {
+ Add();
+ }
+
+ private void Add()
+ {
+ bool zeroPanels = false;
+ WrapPanel wrapPanel = new WrapPanel
+ {
+ Orientation = Orientation.Vertical, // Jedes WrapPanel wird vertikal sein
+ Margin = new Thickness(10),
+ Width = 600
+ };
+
+ if (Helper.FindVisualChildren(spGroupPers).Count() > 0)
+ {
+ wrapPanel = Helper.FindVisualChildren(spGroupPers).Last();
+ }
+ else
+ zeroPanels = true;
+
+ var nr = Helper.FindVisualChildren(spGroupPers).Where(p => p.Text.StartsWith("Begleitperson")).Count();
+
+ var mainSp = new StackPanel() { Tag = "Count" };
+ mainSp.Orientation = Orientation.Horizontal;
+
+ var sp = new StackPanel();
+ var lbl = new TextBlock() { Text = $"Begleitperson Nr. {nr + 1}:", Margin = new Thickness(5), Height = 20 };
+ lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ sp.Children.Add(lbl);
+ var tb = new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen", Tag = "Name" };
+ ToolTipService.SetInitialShowDelay(tb, 200);
+ MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
+ sp.Children.Add(tb);
+ mainSp.Children.Add(sp);
+
+ var tbTel = new TextBox() { Margin = new Thickness(10, 30, 10, 0), Height = 30, Width = 280, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, ToolTip = "Um eine Person zu entfernen, Feld leer lassen", Tag = "Tel" };
+ ToolTipService.SetInitialShowDelay(tbTel, 200);
+ MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tbTel, "Telefonnummer");
+ mainSp.Children.Add(tbTel);
+
+
+ wrapPanel.Children.Add(mainSp);
+ this.Height = this.Height + 60;
+ // Das WrapPanel zum StackPanel hinzufügen
+
+ if (zeroPanels)
+ {
+ spGroupPers.Children.Add(wrapPanel);
+ this.Height = this.Height + 20;
+ zeroPanels = false;
+ }
+
+ //width = (columnCount * 320) + 10;
+ }
+
+ private void btnRemove_Click(object sender, RoutedEventArgs e)
+ {
+ var wrapPanel = Helper.FindVisualChildren(spGroupPers).Last();
+ wrapPanel.Children.RemoveAt(wrapPanel.Children.Count - 1);
+ this.Height = this.Height - 60;
+ }
+
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private async void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ await SendIt();
+ this.DialogResult = true;
+ }
+
+ }
+}
diff --git a/ZKuP/AddVisitorsList.xaml b/ZKuP/AddVisitorsList.xaml
index e3f4677..f11c6ee 100644
--- a/ZKuP/AddVisitorsList.xaml
+++ b/ZKuP/AddVisitorsList.xaml
@@ -1,15 +1,17 @@
-
+ Title="Besuchergruppe hinzufügen" MinHeight="70" MinWidth="330" Width="330" Loaded="Window_Loaded" Closing="Window_Closing" LocationChanged="Window_LocationChanged">
-
+
-
+
+
-
+
diff --git a/ZKuP/AddVisitorsList.xaml.cs b/ZKuP/AddVisitorsList.xaml.cs
index d5d4dba..fbc5241 100644
--- a/ZKuP/AddVisitorsList.xaml.cs
+++ b/ZKuP/AddVisitorsList.xaml.cs
@@ -1,7 +1,9 @@
using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.RightsManagement;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
@@ -18,34 +20,38 @@ namespace ZKuP
///
/// Interaktionslogik für AddVisitorsList.xaml
///
- public partial class AddVisitorsList : Window
+ public partial class AddVisitorsList : MetroWindow
{
public int GroupID { get; private set; }
int width = 0;
+ bool _isEdit = false;
+ int _idBesucher = 0;
- public AddVisitorsList(int VisitorCount)
+ public AddVisitorsList(int VisitorCount, bool isEdit = false, int idBesucher = 0)
{
InitializeComponent();
BuildWindow(VisitorCount);
- //var col = (VisitorCount / 10) + 1;
- //for (int j = 0; j < col; j++)
- //{
- // var spGroup = new StackPanel() { Orientation = Orientation.Vertical, Margin = new Thickness(0, 0, 0, 50) };
+ if (isEdit)
+ {
+ _isEdit = isEdit;
+ _idBesucher = idBesucher;
+ btnAdd.Visibility = Visibility.Visible;
- // for (int i = 0; i < VisitorCount; i++)
- // {
- // var sp = new StackPanel();
- // var tb = new TextBlock() { Text = $"Besucher Nr. {i + 1}:", Margin = new Thickness(5), Height = 20 };
- // tb.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
- // MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
- // sp.Children.Add(tb);
- // sp.Children.Add(new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30 });
+ var list = SQL.ReadSingleValue($"SELECT besucherList FROM {MainWindow.table}.besucherGroups WHERE idbesucher = '{idBesucher}'").Split(';');
- // spGroup.Children.Add(sp);
- // }
- //}
+ if (list.Length > 0)
+ {
+ var boxes = Helper.FindVisualChildren(spGroup).ToList();
+
+ for (var i = 0; i < Helper.FindVisualChildren(spGroup).Count(); i++)
+ {
+ if (list.Length > i && !string.IsNullOrWhiteSpace(list[i]))
+ boxes[i].Text = list[i];
+ }
+ }
+ }
}
private void BuildWindow(int besucherAnzahl)
@@ -71,11 +77,13 @@ namespace ZKuP
for (int j = 0; j < maxProSpalte && (i * maxProSpalte + j) < besucherAnzahl; j++)
{
var sp = new StackPanel();
- var tb = new TextBlock() { Text = $"Besucher Nr. {i * maxProSpalte + j + 1}:", Margin = new Thickness(5), Height = 20 };
- tb.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ var lbl = new TextBlock() { Text = $"Begleitperson Nr. {i * maxProSpalte + j + 1}:", Margin = new Thickness(5), Height = 20 };
+ lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ sp.Children.Add(lbl);
+ var tb = new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
+ ToolTipService.SetInitialShowDelay(tb, 200);
MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
sp.Children.Add(tb);
- sp.Children.Add(new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280 });
wrapPanel.Children.Add(sp);
@@ -92,29 +100,144 @@ namespace ZKuP
{
this.Height = spGroup.DesiredSize.Height + 40;
this.Width = width;
+
+ Helper.CheckWindowIsInScreenSpace(this);
}
- private async void btnAdd_Click(object sender, RoutedEventArgs e)
+ private async void btnSend_Click(object sender, RoutedEventArgs e)
+ {
+ await SendIt();
+ this.Close();
+ }
+
+ private async Task SendIt()
{
var visitors = "";
- foreach (var t in this.FindChildren())
+ foreach (var t in this.FindChildren())
{
- if(string.IsNullOrWhiteSpace(t.Text))
+ if (!string.IsNullOrWhiteSpace(t.Text))
{
- MessageBox.Show("Alle Besucher müssen eingetragen werden!", "Unzureichende Eingabe", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
+ if (t.Text.ToList().Distinct().Count() < 4)
+ {
+ MessageBox.Show("Personen müssen qualifiziert angegeben werden!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
+ return;
+ }
+ else
+ visitors += t.Text + ";";
+
+ //MessageBox.Show("Alle Besucher müssen eingetragen werden!", "Unzureichende Eingabe", MessageBoxButton.OK, MessageBoxImage.Error);
+ //return;
}
- visitors += t.Text + ";";
}
try
{
- await SQL.WriteSQL($"Insert INTO {MainWindow.table}.besucherGroups (besucherList) VALUES ('{visitors}')");
- GroupID = Convert.ToInt32(SQL.ReadSingleValue($"SELECT LAST_INSERT_ID()"));
+ var count = visitors.Split(';').Count() - 1;
+
+ if (count > 0)
+ {
+ if (_isEdit)
+ {
+ if (Helper.FindVisualChildren(spGroup).Count() > count)
+ if (MessageBoxResult.OK == MessageBox.Show("Es müssen alle Besucher namentlich angegeben werden\n\nEs wird nur die Anzahl der ausgefüllten Felder als 'Anzahl Begleitpersonen' hinterlegt", "Unzureichende Angaben", MessageBoxButton.OKCancel, MessageBoxImage.Warning))
+ {
+ if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
+ {
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = '{visitors}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = @visitors WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@visitors", visitors),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@count", count),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ }
+ else
+ {
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES ('{visitors}','{_idBesucher}')");
+ GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List()
+ {
+ new MySqlParameter("@visitors", visitors),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@count", count),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ }
+ }
+ else return;
+ else
+ {
+ if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
+ {
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = '{visitors}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = @visitors WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@visitors", visitors),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@count", count),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ }
+ else
+ {
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES ('{visitors}','{_idBesucher}')");
+ GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List()
+ {
+ new MySqlParameter("@visitors", visitors),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List()
+ {
+ new MySqlParameter("@count", count),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ }
+ }
+ }
+ else
+ //await SQL.WriteSQL($"Insert INTO {MainWindow.table}.besucherGroups (besucherList) VALUES ('{visitors}')");
+ GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List()
+ {
+ new MySqlParameter("@visitors", visitors),
+ new MySqlParameter("@idbesucher", _idBesucher)
+ });
+ }
+ else
+ {
+ if (MessageBoxResult.OK == MessageBox.Show("Es wurden keine Personen angegeben!\nDie Anzahl der Personen wird somit auf 0 gesetzt", "Keine Angaben", MessageBoxButton.OKCancel, MessageBoxImage.Error))
+ {
+ if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.besucherGroups WHERE idbesucher = '{_idBesucher}'");
+ //await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '0' WHERE idbesucher = '{_idBesucher}'");
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = 0 WHERE idbesucher = @_idBesucher", new List()
+ {
+ new MySqlParameter("@_idBesucher", _idBesucher)
+ });
+ }
+ }
+ }
+
+ //GroupID = Convert.ToInt32(SQL.ReadSingleValue($"SELECT LAST_INSERT_ID()"));
this.DialogResult = true;
- this.Close();
}
catch (Exception ex)
{
@@ -122,5 +245,59 @@ namespace ZKuP
MessageBox.Show("Es ist ein Fehler beim hinzufügen der Besucher aufgetreten, bitte erneut versuchen", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
+
+ private void btnAdd_Click(object sender, RoutedEventArgs e)
+ {
+ bool zeroPanels = false;
+ WrapPanel wrapPanel = new WrapPanel
+ {
+ Orientation = Orientation.Vertical, // Jedes WrapPanel wird vertikal sein
+ Margin = new Thickness(10),
+ Width = 300
+ };
+
+ if (Helper.FindVisualChildren(spGroup).Count() > 0)
+ {
+ wrapPanel = Helper.FindVisualChildren(spGroup).Last();
+ }
+ else
+ zeroPanels = true;
+
+ var nr = Helper.FindVisualChildren(spGroup).Count();
+
+ var sp = new StackPanel();
+ var lbl = new TextBlock() { Text = $"Begleitperson Nr. {nr + 1}:", Margin = new Thickness(5), Height = 20 };
+ lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
+ sp.Children.Add(lbl);
+ var tb = new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
+ ToolTipService.SetInitialShowDelay(tb, 200);
+ MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
+ sp.Children.Add(tb);
+
+
+ wrapPanel.Children.Add(sp);
+ this.Height = this.Height + 60;
+ // Das WrapPanel zum StackPanel hinzufügen
+
+ if (zeroPanels)
+ {
+ spGroup.Children.Add(wrapPanel);
+ this.Height = this.Height + 20;
+ zeroPanels = false;
+ }
+
+ //width = (columnCount * 320) + 10;
+ }
+
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private async void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ await SendIt();
+ }
}
}
diff --git a/ZKuP/App.xaml b/ZKuP/App.xaml
index bd38b26..f646394 100644
--- a/ZKuP/App.xaml
+++ b/ZKuP/App.xaml
@@ -1,6 +1,7 @@
@@ -11,6 +12,14 @@
+
+
+
+
diff --git a/ZKuP/App.xaml.cs b/ZKuP/App.xaml.cs
index 135691d..1a5d585 100644
--- a/ZKuP/App.xaml.cs
+++ b/ZKuP/App.xaml.cs
@@ -2,9 +2,14 @@
using System.Collections.Generic;
using System.Configuration;
using System.Data;
+using System.Diagnostics;
using System.Linq;
+using System.Runtime.InteropServices;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows;
+using System.Windows.Input;
+using System.Windows.Threading;
namespace ZKuP
{
@@ -18,14 +23,19 @@ namespace ZKuP
public App()
{
//AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
-#if !DEBUG
+//#if !DEBUG
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; // Example 1
DispatcherUnhandledException += App_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; // Example 3
- TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
-#endif
+ TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
+
+
+ //#endif
}
+
+
+
void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
if (!e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
@@ -50,9 +60,12 @@ namespace ZKuP
void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
{
- if (!e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
- && !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet."))
- Log.WriteLog("2: " + e.Exception.ToString());
+ if (SQL.isOnline && !e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
+ && !e.Exception.ToString().Contains("System.OperationCanceledException")
+ && !e.Exception.ToString().Contains("System.ObjectDisposedException")
+ && !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet.")
+ && !e.Exception.ToString().Contains("Derzeit ist kein Layout"))
+ Log.WriteLog("2: " + e.Exception.ToString() + "\n" + e.ToString() + "\n" + (sender.GetType().ToString()));
//if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
//{
@@ -115,6 +128,52 @@ namespace ZKuP
//}
e.SetObserved();
}
-//#endif
+
+
+ //private static Mutex _mutex;
+
+ [DllImport("user32.dll")]
+ private static extern bool SetForegroundWindow(IntPtr hWnd);
+
+ [DllImport("user32.dll")]
+ private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
+
+ private const int SW_RESTORE = 9;
+
+ //protected override void OnStartup(StartupEventArgs e)
+ //{
+ // const string mutexName = "ZKuPMutex";
+
+ // bool createdNew;
+ // _mutex = new Mutex(true, mutexName, out createdNew);
+
+ // if (!createdNew)
+ // {
+ // // Another instance is already running
+ // BringOtherInstanceToFront();
+ // Environment.Exit(0); // Exit this instance
+ // return;
+ // }
+
+ // base.OnStartup(e);
+ //}
+
+ public static void BringOtherInstanceToFront()
+ {
+ var current = Process.GetCurrentProcess();
+ var other = Process.GetProcessesByName(current.ProcessName)
+ .FirstOrDefault(p => p.Id != current.Id);
+
+ if (other != null)
+ {
+ IntPtr hWnd = other.MainWindowHandle;
+ if (hWnd != IntPtr.Zero)
+ {
+ ShowWindow(hWnd, SW_RESTORE);
+ SetForegroundWindow(hWnd);
+ }
+ }
+ }
+ //#endif
}
}
diff --git a/ZKuP/ApproveFzg.xaml b/ZKuP/ApproveFzg.xaml
new file mode 100644
index 0000000..4950853
--- /dev/null
+++ b/ZKuP/ApproveFzg.xaml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ZKuP/ApproveFzg.xaml.cs b/ZKuP/ApproveFzg.xaml.cs
new file mode 100644
index 0000000..c8c251d
--- /dev/null
+++ b/ZKuP/ApproveFzg.xaml.cs
@@ -0,0 +1,156 @@
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+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 ZKuP
+{
+ ///
+ /// Interaktionslogik für ApproveFzg.xaml
+ ///
+ public partial class ApproveFzg : MetroWindow
+ {
+ DataTable Fzg = new DataTable("Fzg");
+
+ public ApproveFzg()
+ {
+ this.DataContext = this;
+
+ InitializeComponent();
+
+ Fzg = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.fzgAnmeldung").Result;
+
+ dgFzg.DataContext = Fzg;
+ }
+
+
+ private async void InfoButton_Click(object sender, RoutedEventArgs e)
+ {
+ var buttons = Helper.FindVisualChildren
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+ OpenSource Bibliotheken:
+
+
+ http://bouncycastle.org/csharp/
+
+
+ https://github.com/iamartyom/ColorHelper
+
+
+ https://github.com/Fody/Costura
+
+
+ https://github.com/protocolbuffers/protobuf
+
+
+ https://github.com/MiloszKrajewski/K4os.Compression.LZ4
+
+
+ https://github.com/MahApps/MahApps.Metro
+
+
+ https://www.newtonsoft.com/json
+
+
+ https://github.com/micdenny/WpfScreenHelper
+
+
+ https://github.com/XamlAnimatedGif/XamlAnimatedGif
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -985,12 +1044,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ZKuP/MainWindow.xaml.cs b/ZKuP/MainWindow.xaml.cs
index 57233e3..9b9dd7b 100644
--- a/ZKuP/MainWindow.xaml.cs
+++ b/ZKuP/MainWindow.xaml.cs
@@ -1,39 +1,33 @@
-using Renci.SshNet.Messages;
+using ColorHelper;
+using ControlzEx.Standard;
+using FuzzySharp;
+using MahApps.Metro.Controls;
+using Microsoft.Toolkit.Uwp.Notifications;
+using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
+using System.Diagnostics;
using System.DirectoryServices.AccountManagement;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
-using System.Security.Permissions;
using System.Security.Principal;
using System.Text;
+using System.Text.RegularExpressions;
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.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
-using MahApps.Metro.Controls;
-using Microsoft.Toolkit.Uwp.Notifications;
-using System.Diagnostics;
-using MySql.Data.MySqlClient;
-using System.Xml.Linq;
-using FuzzySharp;
+using Windows.UI.Composition;
using Process = System.Diagnostics.Process;
-using System.Collections;
-using System.Diagnostics.Eventing.Reader;
-using ColorHelper;
-using System.Text.RegularExpressions;
-using Windows.Devices.PointOfService;
namespace ZKuP
{
@@ -49,12 +43,15 @@ namespace ZKuP
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
-
+ public const string Version = "5.0.5.8";
public static Roles LoggedInRole { get; private set; } = Roles.None;
-#if !DEBUG
+
+
+//#warning No Release, Tabellen vertauscht
+#if DEBUG
+ public static string table { get; } = "zkupTestEnv";//
+#elif !DEBUG
public static string table { get; } = "zkup";
-#elif DEBUG
- public static string table { get; } = "zkupTestEnv";
#endif
public string NoToolTip { get; } = "Doppelklick um Ankunft zu Bestätigen";
@@ -72,6 +69,14 @@ namespace ZKuP
set { parkEmailUsers = value; OnPropertyChanged(); }
}
+ private DataTable fzgAnmeldungEmailUsers = new DataTable("FzgAnmeldungEmailUsers");
+ public DataTable FzgAnmeldungEmailUsers
+ {
+ get { return fzgAnmeldungEmailUsers; }
+ set { fzgAnmeldungEmailUsers = value; OnPropertyChanged(); }
+ }
+
+
DataTable overv = new DataTable("Overview");
DataTable todayFirm = new DataTable("TodayFirm");
@@ -83,25 +88,35 @@ namespace ZKuP
DispatcherTimer reloadTimerHinweis = new DispatcherTimer();
DispatcherTimer checkUpdateTimer = new DispatcherTimer();
DispatcherTimer connTimer = new DispatcherTimer();
+ DispatcherTimer ausfahrtTimer = new DispatcherTimer();
RoutedCommand resetWindow;
RoutedCommand skullWindow;
int maxBikes = 24;
-
+ bool ReadyToSavePosition = false;
public MainWindow()
{
InitializeComponent();
+ Startup();
+ }
+
+ private async void Startup()
+ {
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
- //this.WindowState = WindowState.Normal;
+ await CheckConnection(true);
- cbShowParkcardToAccept.IsChecked = Properties.Settings.Default.ShowParkcardAccept;
+ cbShowParkcardToAccept.IsChecked = Settings.GetSettingBool("ShowParkcardAccept");
- if ((Properties.Settings.Default.Width + Properties.Settings.Default.Left) >= System.Windows.SystemParameters.PrimaryScreenWidth) CenterWindowOnScreen(this);
- if ((Properties.Settings.Default.Height + Properties.Settings.Default.Top) >= System.Windows.SystemParameters.PrimaryScreenHeight) CenterWindowOnScreen(this);
+ lblVersion.Text = "Version " + Version;
+
+
+
+ //if ((Settings.GetSettingDouble("Width") + Settings.GetSettingDouble("Left")) >= System.Windows.SystemParameters.PrimaryScreenWidth) CenterWindowOnScreen(this);
+ //if ((Settings.GetSettingDouble("Height") + Settings.GetSettingDouble("Top")) >= System.Windows.SystemParameters.PrimaryScreenHeight) CenterWindowOnScreen(this);
if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ZKuPUpdater.exe") || File.GetLastWriteTime(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ZKuPUpdater.exe") != File.GetLastWriteTime(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\ZKuPUpdater.exe"))
{
@@ -115,7 +130,9 @@ namespace ZKuP
CheckWorkingDir();
CheckVersion();
- CheckConnection();
+ CheckMaintenance();
+ CheckNotification();
+
resetWindow = new RoutedCommand();
resetWindow.InputGestures.Add(new KeyGesture(Key.R, ModifierKeys.Control));
@@ -144,7 +161,7 @@ namespace ZKuP
try
{
var newVersion = new Version(File.ReadAllText(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Version.txt"));
- var oldVersion = new Version(lblVersion.Text.Split(' ')[1]);
+ var oldVersion = new Version(Version);
var result = newVersion.CompareTo(oldVersion);
if (result >= 1)
@@ -192,7 +209,7 @@ namespace ZKuP
private void CheckForNewVersion()
{
var newVersion = new Version(File.ReadAllText(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Version.txt"));
- var oldVersion = new Version(lblVersion.Text.Split(' ')[1]);
+ var oldVersion = new Version(Version);
var result = newVersion.CompareTo(oldVersion);
if (result >= 1)
@@ -220,26 +237,117 @@ namespace ZKuP
return;
}
}
- else updateAlreadyAsked = true;
+ else updateAlreadyAsked = true;
+ }
}
- }
+
+
+ private void CheckNotification()
+ {
+ if (LoggedInRole != Roles.None)
+ {
+ var path = @"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Notification.txt";
+
+ var text = File.ReadAllText(path).Split('|')[0];
+
+ bool repeat = false;
+ if (text.EndsWith("|true")) repeat = true;
+
+ if (text.Length > 0)
+ {
+ if (!Settings.GetSettingBool("HinweisShown")) MessageBox.Show(text, "Hinweis", MessageBoxButton.OK, MessageBoxImage.Stop);
+ if (!repeat) Settings.WriteSetting("HinweisShown", true);
+ }
+ else Settings.WriteSetting("HinweisShown", false);
+ }
+ }
+
+ private void CheckMaintenance()
+ {
+ var path = @"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Maintenance.txt";
+
+ var text = File.ReadAllText(path);
+ if (text.Length > 0)
+ {
+ MessageBox.Show(text + "\n\nDie Anwendung wird jetzt wieder geschlossen!", "Wartungsarbeiten", MessageBoxButton.OK, MessageBoxImage.Stop);
+ Application.Current.Shutdown();
+ }
+ }
+
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
await Task.Run(() => AuthenticateUser());
+//#if !DEBUG
+ Helper.CheckIfMultipleInstances();
+//#endif
+
double maxheight = this.ActualHeight - 120 - 191;
double actualheight = this.ActualHeight - 120 - gridBackground.RowDefinitions[1].Height.Value;
if (actualheight <= 191) gridBackground.RowDefinitions[1].Height = new GridLength(maxheight);
//gridSpinner.Visibility = Visibility.Collapsed;
+ Helper.width = this.MinWidth;
+ Helper.height = this.MinHeight;
+
connTimer.Interval = TimeSpan.FromSeconds(2);
connTimer.Tick += ConnTimer_Tick;
connTimer.Start();
+
+ Helper.CheckScale(this);
+ Helper.CheckWindowIsInScreenSpace(this);
+
}
+ #region Check if Window was moved and released
+ private const int WM_ENTERSIZEMOVE = 0x0231;
+ private const int WM_EXITSIZEMOVE = 0x0232;
+
+ private Point _startPosition;
+ private Size _startSize;
+
+
+ protected override void OnSourceInitialized(EventArgs e)
+ {
+ base.OnSourceInitialized(e);
+ HwndSource source = (HwndSource)PresentationSource.FromVisual(this);
+ source.AddHook(WndProc);
+ }
+
+ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
+ {
+ switch (msg)
+ {
+ case WM_ENTERSIZEMOVE:
+ _startPosition = new Point(Left, Top);
+ _startSize = new Size(Width, Height);
+ break;
+
+ case WM_EXITSIZEMOVE:
+ bool sizeChanged = Width != _startSize.Width || Height != _startSize.Height;
+ bool positionChanged = Left != _startPosition.X || Top != _startPosition.Y;
+
+ if (positionChanged && !sizeChanged)
+ {
+ OnWindowMoveFinished();
+ }
+ break;
+ }
+
+ return IntPtr.Zero;
+ }
+
+ private void OnWindowMoveFinished()
+ {
+ Helper.CheckScale(this);
+ }
+ #endregion
+
+
+
private async void AuthenticateUser()
{
if (!SQL.CheckDeviceConnection())
@@ -270,7 +378,7 @@ namespace ZKuP
await Dispatcher.BeginInvoke(new Action(() => pgLoad.Value = 15));
auth = await SQL.ReadSingleValueAsync($"SELECT EXISTS(SELECT * FROM {MainWindow.table}.users WHERE `Username` = '{Environment.UserName}')");
- await Dispatcher.BeginInvoke(new Action(() => SQL.WriteSQL($"REPLACE INTO {MainWindow.table}.apptracker (Username, Version, LastLogin) VALUES ('{Environment.UserName}', '{lblVersion.Text.Split(' ')[1]}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}')")));
+ await Dispatcher.BeginInvoke(new Action(() => SQL.WriteSQL($"REPLACE INTO {MainWindow.table}.apptracker (Username, Version, LastLogin) VALUES ('{Environment.UserName}', '{Version}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}')")));
await Dispatcher.BeginInvoke(new Action(() => pgLoad.Value = 20));
@@ -284,7 +392,7 @@ namespace ZKuP
//CheckVersion();
await Dispatcher.BeginInvoke(new Action(() =>
{
- var res = MessageBox.Show($"Ihr User {Environment.UserName} ist nicht zum Zugriff berechtigt\n\nMöchten Sie einen Besucher erstellen, eine Parkkarte beantragen oder eine Werksführung buchen?", "Zugriff verweigert", MessageBoxButton.YesNo, MessageBoxImage.Warning);
+ var res = MessageBox.Show($"Ihr User {Helper.InsertSpaceBeforeUpperCase(Environment.UserName)} ist nicht zum Zugriff berechtigt\n\nMöchten Sie einen Parkausweis beantragen, einen McFit User erstellen oder eine Werksführung buchen?", "Zugriff verweigert", MessageBoxButton.YesNo, MessageBoxImage.Warning);
if (res == MessageBoxResult.Yes)
{
@@ -325,34 +433,22 @@ namespace ZKuP
case "5":
OrganisatorStart();
break;
+ case "6":
+ M2_AMStart();
+ break;
default:
BesucherCreateStart();
break;
}
+
+ this.Title = "ZKuP - " + Version + "\tRolle: " + LoggedInRole.ToString().Replace("_", " ");
+
}));
- var beInfos = await SQL.ReadListStringTwoColumns($"SELECT flaeche, bereich FROM {MainWindow.table}.`be-belegung`");
- await Dispatcher.BeginInvoke(new Action(() =>
+ //var beInfos = await SQL.ReadListStringTwoColumns($"SELECT flaeche, bereich FROM {MainWindow.table}.`be-belegung`");
+ await Dispatcher.BeginInvoke(new Action(async () =>
{
- //foreach (TextBlock tb in Helper.FindVisualChildren(BE).Where(p => p.Tag != null))
- //{
- // if (tb.Tag.ToString() != "0")
- // {
- // StackPanel sp = new StackPanel();
-
- // string ort = beInfos.Where(p => p.StartsWith(tb.Tag.ToString())).First().Split(';')[1];
-
- // var img = new BitmapImage(new Uri(@"pack://application:,,,/"
- // + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
- // + ";component/"
- // + $"Assets/BE{tb.Tag.ToString()}.png", UriKind.Absolute));
-
- // sp.Children.Add(new TextBlock() { Text = $"BE-Fläche {tb.Tag.ToString()} - {ort}", FontWeight = FontWeights.Bold });
- // sp.Children.Add(new Image() { Source = img, Width = img.Width / 1.5, Height = img.Height / 1.5 });
-
- // tb.ToolTip = sp;
- // }
- //}
+ var ausgegebenAn = await SQL.ReadDictionary2($"SELECT p.parkplatznr, f.Name FROM {MainWindow.table}.parkplaetze p LEFT JOIN {MainWindow.table}.firmen f ON f.idFirmen = p.firma", 0, 1);
foreach (TextBlock tb in Helper.FindVisualChildren(BE))//.Where(p => p.Tag == null))
{
@@ -369,7 +465,14 @@ namespace ZKuP
sp.Children.Add(new TextBlock() { Text = $"Parkplatz {tb.Text.PadLeft(2,'0')}", FontWeight = FontWeights.Bold });
sp.Children.Add(new Image() { Source = img, Width = img.Width, Height = img.Height });
+
+ var x = ausgegebenAn.TryGetValue(parkplatz, out string y);
+ if (ausgegebenAn.ContainsKey(parkplatz) && x && !string.IsNullOrWhiteSpace(y))
+ sp.Children.Add(new TextBlock() { Text = $"Ausgegeben an {y}" });
+
tb.ToolTip = sp;
+ ToolTipService.SetInitialShowDelay(tb, 100);
+ ToolTipService.SetBetweenShowDelay(tb, 100);
}
}
}));
@@ -410,7 +513,35 @@ namespace ZKuP
dgOverview.Items.SortDescriptions.Add(new SortDescription("Zutritt", ListSortDirection.Descending));
dgOverview.Items.Refresh();
- gridSpinner.Visibility = Visibility.Collapsed;
+ //var gif = XamlAnimatedGif.AnimationBehavior.GetAnimator(imgLoading);
+ //if (gif != null)
+ //{
+ // gif.Pause();
+ //}
+ //imgLoading.Visibility = Visibility.Collapsed;
+
+ this.Height = Settings.GetSettingDouble("Height");
+ this.Width = Settings.GetSettingDouble("Width");
+ this.Left = Settings.GetSettingDouble("Left");
+ this.Top = Settings.GetSettingDouble("Top");
+
+ var ws = Settings.GetSetting("WindowState");
+ this.WindowState = ws == "" ? WindowState.Normal : (WindowState)ws;
+
+ //double ratio = Settings.GetSettingDouble("ColumnRatio");
+
+ // Gespeicherte Werte laden
+ double col1Width = Settings.GetSettingDouble("LeftColumn");
+ double col2Width = Settings.GetSettingDouble("RightColumn");
+
+ // Column-Breiten setzen
+ gridToday.ColumnDefinitions[0].Width = new GridLength(col1Width, GridUnitType.Star);
+ gridToday.ColumnDefinitions[2].Width = new GridLength(col2Width, GridUnitType.Star);
+ // Index 1 ist der GridSplitter mit Auto-Breite
+
+
+ ReadyToSavePosition = true;
+ gridSpinner.Visibility = Visibility.Hidden;
@@ -418,9 +549,9 @@ namespace ZKuP
reloadTimer.Tick += ReloadTimer_Tick;
reloadTimer.Start();
- reloadTimerHinweis.Interval = TimeSpan.FromSeconds(10);
- reloadTimerHinweis.Tick += ReloadTimerHinweis_Tick;
- reloadTimerHinweis.Start();
+ //reloadTimerHinweis.Interval = TimeSpan.FromSeconds(10);
+ //reloadTimerHinweis.Tick += ReloadTimerHinweis_Tick;
+ //reloadTimerHinweis.Start();
checkUpdateTimer.Interval = TimeSpan.FromMinutes(5);
checkUpdateTimer.Tick += CheckUpdateTimer_Tick;
@@ -429,7 +560,7 @@ namespace ZKuP
- if (LoggedInRole == Roles.Admin && Properties.Settings.Default.ShowParkcardAccept)
+ if ((LoggedInRole == Roles.Admin || LoggedInRole == Roles.M2_AM) && Settings.GetSettingBool("ShowParkcardAccept"))
{
if (SQL.RowExists("parkausweise", "Genehmigt", "0").Result == true)
{
@@ -441,7 +572,7 @@ namespace ZKuP
}
}
}
- else if (LoggedInRole == Roles.Admin && Properties.Settings.Default.ShowParkcardPrint)
+ else if ((LoggedInRole == Roles.Admin || LoggedInRole == Roles.M2_AM) && Settings.GetSettingBool("ShowParkcardPrint"))
{
if (SQL.RowExists("parkausweise", "Genehmigt = '1' AND Gedruckt", "0").Result == true)
{
@@ -456,6 +587,12 @@ namespace ZKuP
}));
}
+
+ Dispatcher.Invoke(() => Helper.FindVisualChildren(dgToday, "btnInfo").ToList().ForEach(q =>
+ {
+ q.Click -= BtnInfo_Click;
+ q.Click += BtnInfo_Click;
+ }));
}
else
{
@@ -523,7 +660,7 @@ namespace ZKuP
"Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
- Application.Current.Shutdown();
+ Dispatcher.Invoke(() => Application.Current.Shutdown());
return false;
}
@@ -549,7 +686,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Visible;
gridLieferanten.Visibility = Visibility.Visible;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Visible;
tbSearchArrived.Visibility = Visibility.Visible;
@@ -569,10 +706,11 @@ namespace ZKuP
btnBelegung.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Visible;
btnBE.Visibility = Visibility.Visible;
+ btnApproveFzg.Visibility = Visibility.Visible;
btnCheckParkausweis.Visibility = Visibility.Visible;
btnCreateParkausweis.Visibility = Visibility.Visible;
- btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
+ //btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
btnGrantParkausweis.Visibility = Visibility.Visible;
btnListParkausweis.Visibility = Visibility.Visible;
btnPrintParkausweis.Visibility = Visibility.Visible;
@@ -605,9 +743,16 @@ namespace ZKuP
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
//CommandBindings.Add(new CommandBinding(skullWindow, MainWindow_SkullWindow));
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+#if DEBUG
+ //ausfahrtTimer.Tick += AusfahrtTimer_Tick;
+ //ausfahrtTimer.Interval = TimeSpan.FromMinutes(0.1);
+ //ausfahrtTimer.Start();
+#endif
tcMainMenu.SelectedIndex = 4;
}
@@ -630,7 +775,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Collapsed;
gridLieferanten.Visibility = Visibility.Collapsed;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Visible;
tbSearchArrived.Visibility = Visibility.Visible;
@@ -644,6 +789,7 @@ namespace ZKuP
btnBelegung.Visibility = Visibility.Collapsed;
btnBE.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
btnCreateParkausweis.Visibility = Visibility.Visible;
@@ -660,8 +806,10 @@ namespace ZKuP
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
tcMainMenu.SelectedIndex = 1;
}
@@ -685,7 +833,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Collapsed;
gridLieferanten.Visibility = Visibility.Collapsed;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Visible;
tbSearchArrived.Visibility = Visibility.Visible;
@@ -699,6 +847,7 @@ namespace ZKuP
btnBelegung.Visibility = Visibility.Collapsed;
btnBE.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
btnCreateParkausweis.Visibility = Visibility.Visible;
@@ -715,8 +864,10 @@ namespace ZKuP
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
tcMainMenu.SelectedIndex = 1;
}
@@ -740,7 +891,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Collapsed;
gridLieferanten.Visibility = Visibility.Collapsed;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Visible;
tbSearchArrived.Visibility = Visibility.Visible;
@@ -754,8 +905,14 @@ namespace ZKuP
btnBelegung.Visibility = Visibility.Visible;
btnBE.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
- btnCreateParkausweis.Visibility = Visibility.Visible;
+ btnCreateParkausweis.Visibility = Visibility.Visible;
+ btnCheckParkausweis.Visibility = Visibility.Visible;
+ //btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
+ btnGrantParkausweis.Visibility = Visibility.Visible;
+ btnListParkausweis.Visibility = Visibility.Visible;
+ btnPrintParkausweis.Visibility = Visibility.Visible;
btnSettings.Visibility = Visibility.Collapsed;
btnArrivalsOverview.Visibility = Visibility.Visible;
@@ -770,12 +927,76 @@ namespace ZKuP
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
tcMainMenu.SelectedIndex = 1;
}
+ private void M2_AMStart()
+ {
+ LoggedInRole = Roles.M2_AM;
+
+ //CheckVersion();
+
+ tabAdmin.Visibility = Visibility.Collapsed;
+ tabFirmBesAsp.Visibility = Visibility.Visible;
+ tabPark.Visibility = Visibility.Visible;
+ tabPfoertner.Visibility = Visibility.Collapsed;
+ tabSonstiges.Visibility = Visibility.Visible;
+
+ Main.Visibility = Visibility.Visible;
+ gridToday.Visibility = Visibility.Visible;
+ gridArrived.Visibility = Visibility.Visible;
+
+ gridBike.Visibility = Visibility.Collapsed;
+ gridLieferanten.Visibility = Visibility.Collapsed;
+
+ //lblSearch.Visibility = Visibility.Visible;
+ tbSearch.Visibility = Visibility.Visible;
+ lblSearchArrived.Visibility = Visibility.Visible;
+ tbSearchArrived.Visibility = Visibility.Visible;
+ btnClearSearch.Visibility = Visibility.Visible;
+ btnClearSearchArrived.Visibility = Visibility.Visible;
+
+ btnCreateVisitor.Visibility = Visibility.Visible;
+ btnCreateFirma.Visibility = Visibility.Visible;
+ btnManageAsp.Visibility = Visibility.Visible;
+ btnManageUsers.Visibility = Visibility.Collapsed;
+ btnBelegung.Visibility = Visibility.Visible;
+ btnBE.Visibility = Visibility.Visible;
+ btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
+
+ btnCreateParkausweis.Visibility = Visibility.Visible;
+ btnCheckParkausweis.Visibility = Visibility.Visible;
+ //btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
+ btnGrantParkausweis.Visibility = Visibility.Visible;
+ btnListParkausweis.Visibility = Visibility.Visible;
+ btnPrintParkausweis.Visibility = Visibility.Visible;
+
+ btnSettings.Visibility = Visibility.Collapsed;
+ btnArrivalsOverview.Visibility = Visibility.Visible;
+
+ gridSplitter.Visibility = Visibility.Visible;
+ gridSplitterArrows.Visibility = Visibility.Visible;
+ gridSplitterLine.Visibility = Visibility.Visible;
+ //MessageBox.Show("Sie sind Editor");
+ // something that only an editor user should be able to do
+ btnMcFitSign.Visibility = Visibility.Visible;
+ //btnNotification.Visibility = Visibility.Visible;
+
+ CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
+
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
+
+ tcMainMenu.SelectedIndex = 1;
+ }
private void PfoertnerStart()
{
LoggedInRole = Roles.Pförtner;
@@ -794,7 +1015,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Visible;
gridLieferanten.Visibility = Visibility.Visible;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Visible;
tbSearchArrived.Visibility = Visibility.Visible;
@@ -812,6 +1033,7 @@ namespace ZKuP
btnEmergency.Visibility = Visibility.Visible;
btnBE.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Visible;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
btnCheckParkausweis.Visibility = Visibility.Visible;
//btnPrintParkausweis.Visibility = Visibility.Visible;
@@ -830,10 +1052,16 @@ namespace ZKuP
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
tcMainMenu.SelectedIndex = 2;
+
+ ausfahrtTimer.Tick += AusfahrtTimer_Tick;
+ ausfahrtTimer.Interval = TimeSpan.FromMinutes(1);
+ ausfahrtTimer.Start();
}
private void OrganisatorStart()
@@ -842,14 +1070,16 @@ namespace ZKuP
tabAdmin.Visibility = Visibility.Collapsed;
tabFirmBesAsp.Visibility = Visibility.Visible;
- tabPark.Visibility = Visibility.Collapsed;
+ tabPark.Visibility = Visibility.Visible;
tabPfoertner.Visibility = Visibility.Collapsed;
tabSonstiges.Visibility = Visibility.Visible;
dgToday.Visibility = Visibility.Collapsed;
lblAnkunftHeuteFirmen.Visibility = Visibility.Collapsed;
+ Grid.SetColumn(lblAnkunftHeuteBesucher, 0);
Grid.SetColumn(dgTodayBesucher, 0);
- Grid.SetColumnSpan(dgTodayBesucher, 2);
- lineVertical.Visibility = Visibility.Collapsed;
+ Grid.SetColumnSpan(dgTodayBesucher, 3);
+ gridSplitterVertical.Visibility = Visibility.Collapsed;
+ gridSplitterArrowsVertical.Visibility = Visibility.Collapsed;
BesuchP.Visibility = Visibility.Collapsed;
BE.Visibility = Visibility.Collapsed;
@@ -862,7 +1092,7 @@ namespace ZKuP
gridBike.Visibility = Visibility.Collapsed;
gridLieferanten.Visibility = Visibility.Collapsed;
- lblSearch.Visibility = Visibility.Visible;
+ //lblSearch.Visibility = Visibility.Visible;
tbSearch.Visibility = Visibility.Visible;
lblSearchArrived.Visibility = Visibility.Collapsed;
tbSearchArrived.Visibility = Visibility.Collapsed;
@@ -872,7 +1102,7 @@ namespace ZKuP
btnCreateVisitor.Visibility = Visibility.Visible;
btnManageUsers.Visibility = Visibility.Collapsed;
btnCreateFirma.Visibility = Visibility.Collapsed;
- btnManageAsp.Visibility = Visibility.Collapsed;
+ btnManageAsp.Visibility = Visibility.Visible;
btnKarten.Visibility = Visibility.Collapsed;
//btnNew.Visibility = Visibility.Visible;
btnDelivery.Visibility = Visibility.Collapsed;
@@ -880,9 +1110,10 @@ namespace ZKuP
btnEmergency.Visibility = Visibility.Collapsed;
btnBE.Visibility = Visibility.Collapsed;
btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
btnCheckParkausweis.Visibility = Visibility.Collapsed;
- //btnPrintParkausweis.Visibility = Visibility.Visible;
+ btnCreateParkausweis.Visibility = Visibility.Visible;
btnSettings.Visibility = Visibility.Collapsed;
btnArrivalsOverview.Visibility = Visibility.Visible;
@@ -892,14 +1123,16 @@ namespace ZKuP
gridSplitterLine.Visibility = Visibility.Collapsed;
//MessageBox.Show("Sie sind Pförtner");
// something that only an pförtner user should be able to do
- btnMcFitSign.Visibility = Visibility.Collapsed;
+ btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Collapsed;
CommandBindings.Add(new CommandBinding(resetWindow, MainWindow_ResetWindow));
- ChangeTheme(Properties.Settings.Default.DarkMode);
- ChangeAccent(Properties.Settings.Default.Accent);
+ ChangeTheme(Settings.GetSettingBool("DarkMode"));
+ ChangeAccent(Settings.GetSettingString("Accent"));
+ //ChangeTheme(Properties.Settings.Default.DarkMode);
+ //ChangeAccent(Properties.Settings.Default.Accent);
tcMainMenu.SelectedIndex = 1;
}
@@ -948,8 +1181,9 @@ namespace ZKuP
gridSpinner.Visibility = Visibility.Collapsed;
btnMcFitSign.Visibility = Visibility.Visible;
btnKartenTausch.Visibility = Visibility.Collapsed;
+ btnApproveFzg.Visibility = Visibility.Collapsed;
- lblSearch.Visibility = Visibility.Collapsed;
+ //lblSearch.Visibility = Visibility.Collapsed;
tbSearch.Visibility = Visibility.Collapsed;
btnClearSearch.Visibility = Visibility.Collapsed;
lblSearchArrived.Visibility = Visibility.Collapsed;
@@ -983,24 +1217,23 @@ namespace ZKuP
private async void ReloadTimer_Tick(object sender, EventArgs e)
{
- try
- {
- await getToday();
+ try { await Task.Run(() => getToday()); }
+ catch (Exception ex) { Log.WriteLog("getToday(): " + ex.Message); }
- await getZutritte();
+ try { await Task.Run(() => getZutritte()); }
+ catch (Exception ex) { Log.WriteLog("getZutritte(): " + ex.Message); }
- await getPark();
+ try { await Task.Run(() => getPark()); }
+ catch (Exception ex) { Log.WriteLog("getPark(): " + ex.Message); }
- await getMcFitCards();
+ try { await Task.Run(() => getMcFitCards()); }
+ catch (Exception ex) { Log.WriteLog("getMcFitCards(): " + ex.Message); }
- await getFahrzeuge();
+ try { await Task.Run(() => getFahrzeuge()); }
+ catch (Exception ex) { Log.WriteLog("getFahrzeuge(): " + ex.Message); }
- getBikes();
- }
- catch (Exception ex)
- {
- Log.WriteLog(ex.Message);
- }
+ try { await Task.Run(() => getBikes()); }
+ catch (Exception ex) { Log.WriteLog("getBikes(): " + ex.Message); }
}
private void ReloadTimerHinweis_Tick(object sender, EventArgs e)
@@ -1032,26 +1265,146 @@ namespace ZKuP
private void CheckUpdateTimer_Tick(object sender, EventArgs e)
{
- if(!updateAlreadyAsked)
+ if (!updateAlreadyAsked)
{
CheckForNewVersion();
}
+
+ var path = @"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Maintenance.txt";
+
+ var text = File.ReadAllText(path).Split('|')[0];
+
+ if (text.Length > 0)
+ {
+ XMessageBox box = new XMessageBox("Wartungsmodus", "Der Wartungsmodus wurde eingeleitet!\n\n" +
+ "Bitte schließen Sie Ihre Arbeit ab und beenden Sie die Anwendung\n\n" +
+ "Die Anwendung wird in 60 Sekunden automatisch beendet",
+ MessageBoxImage.Exclamation, true, 60);
+ }
+ //MessageBox.Show("Der Wartungsmodus wurde eingeleitet!\n\n" +
+ // "Bitte schließen Sie Ihre Arbeit ab und beenden Sie die Anwendung\n\n" +
+ // "Die Anwendung wird in 60 Sekunden automatisch beendet");
}
+ List notifiedKennzeichen = new List();
+ Dictionary renotifyKennzeichen = new Dictionary();
+ private async void AusfahrtTimer_Tick(object sender, EventArgs e)
+ {
+ var rr = "";
+ try
+ {
+
+ var result = await Task.Run(() => SQL.ReadListStringMultipleColumns($"SELECT arrivalTime, fzgType, firma, fahrer, kennzeichen, telFahrer FROM {MainWindow.table}.fzgTime WHERE " +
+ $"firma NOT LIKE '%DB Energie%' AND " +
+ $"firma NOT LIKE '%DB InfraGO%' AND " +
+ $"firma NOT LIKE '%DB KT%' AND " +
+ $"firma <> 'Gerätewagen'", 6));
+
+ string message = "";
+
+ if (result.Count > 0)
+ {
+ foreach (var r in result)
+ {
+ var s = r.Split(';');
+ rr = r;
+
+ if (s.Length > 5)
+ {
+ switch (s[1].ToString())
+ {
+ case "LKWLang":
+ if ((DateTime.Now - Convert.ToDateTime(s[0])) > TimeSpan.FromMinutes(60) && !notifiedKennzeichen.Contains(s[4]))
+ {
+ message += $"Firma:\t\t{s[2]}\nFahrer:\t\t{s[3]}\nKennzeichen:\t{s[4]}\nTelefon Fahrer:\t{s[5]}\nTyp:\t\t{s[1]}\n\n";
+ }
+ break;
+ case "LKW":
+ if ((DateTime.Now - Convert.ToDateTime(s[0])) > TimeSpan.FromMinutes(60) && !notifiedKennzeichen.Contains(s[4]))
+ {
+ message += $"Firma:\t\t{s[2]}\nFahrer:\t\t{s[3]}\nKennzeichen:\t{s[4]}\nTelefon Fahrer:\t{s[5]}\nTyp:\t\t{s[1]}\n\n";
+ }
+ break;
+ case "Sprinter":
+ if ((DateTime.Now - Convert.ToDateTime(s[0])) > TimeSpan.FromMinutes(30) && !notifiedKennzeichen.Contains(s[4]))
+ {
+ message += $"Firma:\t\t{s[2]}\nFahrer:\t\t{s[3]}\nKennzeichen:\t{s[4]}\nTelefon Fahrer:\t{s[5]}\nTyp:\t\t{s[1]}\n\n";
+ }
+ break;
+ case "PKW":
+ if ((DateTime.Now - Convert.ToDateTime(s[0])) > TimeSpan.FromMinutes(30) && !notifiedKennzeichen.Contains(s[4]))
+ {
+ message += $"Firma:\t\t{s[2]}\nFahrer:\t\t{s[3]}\nKennzeichen:\t{s[4]}\nTelefon Fahrer:\t{s[5]}\nTyp:\t\t{s[1]}\n\n";
+ }
+ break;
+ }
+ }
+ else Log.WriteLog("MessageArray to short:\n\n" + r);
+ }
+
+ if (!string.IsNullOrWhiteSpace(message))
+ {
+ MessageBox.Show("Folgende Fahrzeuge sind bereits zu lang im Werk:\n\n" + message + "Bitte prüfen Sie warum die Fahrzeuge noch im Werk sind", "Fahrzeuge prüfen", MessageBoxButton.OK, MessageBoxImage.Information);
+
+ foreach (var r in result)
+ {
+ if(r.Split(';').Length > 5)
+ notifiedKennzeichen.Add(r.Split(';')[4]);
+
+ if (!renotifyKennzeichen.ContainsValue(r.Split(';')[4]) && !renotifyKennzeichen.ContainsKey(DateTime.Now))
+ renotifyKennzeichen.Add(DateTime.Now, r.Split(';')[4]);
+ }
+ }
+ }
+
+ List remov = new List();
+ foreach (var re in renotifyKennzeichen)
+ {
+ if (notifiedKennzeichen.Contains(re.Value) && (DateTime.Now - re.Key) > TimeSpan.FromMinutes(30))
+ {
+ var firmen = await SQL.ReadListStringMultipleColumns($"SELECT arrivalTime, fzgType, firma, fahrer, kennzeichen, telFahrer FROM {MainWindow.table}.fzgTime WHERE kennzeichen = '{re.Value}'", 6);
+ if (firmen.Count > 0)
+ {
+ var firma = firmen.First().Split(';');
+ if (firma.Length > 5)
+ {
+ MessageBox.Show("Folgendes Fahrzeug ist immer noch im Werk (> 90 min):\n\n" + $"Firma:\t\t{firma[2]}\nFahrer:\t\t{firma[3]}\nKennzeichen:\t{firma[4]}\nTelefon Fahrer:\t{firma[5]}\nTyp:\t\t{firma[1]}\n\n" + "Bitte prüfen Sie warum das Fahrzeug noch im Werk ist", "Fahrzeug prüfen", MessageBoxButton.OK, MessageBoxImage.Information);
+ remov.Add(re.Key);
+ }
+ }
+ }
+ }
+
+ foreach (var r in remov)
+ renotifyKennzeichen.Remove(r);
+
+ }
+ catch (Exception ex)
+ {
+ Log.WriteLog(ex.ToString() + $"\n\nValues:\n\n{rr}");
+ }
+ }
+
+
private void ConnTimer_Tick(object sender, EventArgs e)
{
CheckConnection();
}
bool lastConn = false;
- private async void CheckConnection()
+ bool connMsg = true;
+ private async Task CheckConnection(bool first = false)
{
- bool conn = false;
- await Task.Run(() => conn = SQL.CheckOnline());
+ MySqlConnectionChecker.ConnectionResult conn = new MySqlConnectionChecker.ConnectionResult();
- if (conn)
+ if (first)
+ conn = await MySqlConnectionChecker.CheckConnectionAsync(); //SQL.CheckOnline();
+ else
+ await Task.Run(async () => conn = await MySqlConnectionChecker.CheckConnectionAsync());
+
+ if (conn.IsConnected)
{
- if (conn != lastConn)
+ if (conn.IsConnected != lastConn)
{
imgConnection.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
@@ -1060,206 +1413,261 @@ namespace ZKuP
imgConnection.ToolTip = $"Verbindung OK";
- (this.Resources["sbConnection"] as System.Windows.Media.Animation.Storyboard).Stop();
- lastConn = conn;
- }
- }
- else
- {
- if (conn != lastConn)
- {
- imgConnection.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
- + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
- + ";component/"
- + $"Resources/Disconnected.png", UriKind.Absolute));
-
- imgConnection.ToolTip = $"Verbindung zum Server unterbrochen\n\nEs sind keine Änderungen oder Abfragen möglich";
-
(this.Resources["sbConnection"] as System.Windows.Media.Animation.Storyboard).Begin();
- lastConn = conn;
- }
- }
- }
-
-
- private async Task getToday()
- {
- bool changeTable = false;
-
- if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner)
- {
- DataTable tempFirm = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.firmen where Arbeitsbeginn <= current_date() AND Arbeitsende >= current_date()");/*, tempFirm*/
- DataTable tempBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Kleine_Unterweisung_bis,Oertlichkeit FROM {MainWindow.table}.besucher WHERE Besuchstag = current_date()");/*, tempBesuch*/
- DataTable tempFamily = await SQL.ReadSQL($"SELECT idfamily,concat('Führung: ', Name) AS Name, Name AS Verantwortlicher_MA_Firma, Name AS Ansprechpartner_Intern,TelNr AS Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.family WHERE `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}'");
-
-
- changeTable = ((tempFirm.Rows.Count + tempBesuch.Rows.Count + tempFamily.Rows.Count) != todayFirm.Rows.Count) ? true : false;
-
- if (changeTable)
- {
- todayFirm = tempFirm;
- todayBesuch = tempBesuch;
- todayFamily = tempFamily;
+ (this.Resources["sbConnection"] as System.Windows.Media.Animation.Storyboard).Stop();
+ lastConn = conn.IsConnected;
}
}
else
{
- DataTable tempFirm = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.firmen where (Arbeitsbeginn <= current_date() AND Arbeitsende >= current_date()) AND (Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')");/*, todayFirm*/
- DataTable tempBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Kleine_Unterweisung_bis,Oertlichkeit FROM {MainWindow.table}.besucher WHERE Besuchstag = current_date() AND (Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')");/*, todayBesuch*/
- DataTable tempFamily = await SQL.ReadSQL($"SELECT concat('Führung: ', Name) AS Name, Name AS Verantwortlicher_MA_Firma, Name AS Ansprechpartner_Intern,TelNr AS Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.family WHERE `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' AND `User` = '{Environment.UserName}'");
+ await Log.WriteLog(conn.Message);
- changeTable = ((tempFirm.Rows.Count + tempBesuch.Rows.Count + tempFamily.Rows.Count) != todayFirm.Rows.Count) ? true : false;
-
- if (changeTable)
+ if (!Helper.IsVPNConnected())
{
+ if (connMsg)
+ {
+ connMsg = false;
+
+ MessageBox.Show("Sie haben keine Verbindung zur Datenbank und das DB VPN 'Ivanti Secure Access (ehem. Pulse Secure)' ist nicht verbunden\n\n" +
+ "Befinden Sie sich außerhalb des BKU Netzes, bitte die Verbindung zum VPN sicherstellen\n\n" +
+ "Nach Herstellen der Verbindung erneut starten\n" +
+ "Die Anwendung wird jetzt geschlossen", "VPN verbunden?", MessageBoxButton.OK, MessageBoxImage.Information);
+ }
+
+ Application.Current.Shutdown();
+ Environment.Exit(0);
+ }
+ }
+
+ if (!conn.IsConnected && conn.IsConnected != lastConn)
+ {
+ imgConnection.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ + ";component/"
+ + $"Resources/Disconnected.png", UriKind.Absolute));
+
+ imgConnection.ToolTip = $"Verbindung zum Server unterbrochen\n\nEs sind keine Änderungen oder Abfragen möglich";
+
+ (this.Resources["sbConnection"] as System.Windows.Media.Animation.Storyboard).Begin();
+ lastConn = conn.IsConnected;
+
+ MessageBox.Show($"Fehler bei der Verbindung zur Datenbank\n\nException: {conn.Exception}");
+ }
+ }
+
+
+ DateTime lastChange = DateTime.MinValue;
+ private async Task getToday()
+ {
+ //bool changeTable = false;
+
+ List dates = new List();
+ dates = await SQL.ReadListString($"SELECT timestamp FROM {MainWindow.table}.changes ORDER BY timestamp DESC");
+ var date = Convert.ToDateTime(dates.First());
+
+ if (date != lastChange)
+ {
+ lastChange = date;
+
+ if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner || LoggedInRole == Roles.M2_AM)
+ {
+ DataTable tempFirm = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.firmen where Arbeitsbeginn <= current_date() AND Arbeitsende >= current_date()");/*, tempFirm*/
+ DataTable tempBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Kleine_Unterweisung_bis,Oertlichkeit FROM {MainWindow.table}.besucher WHERE Besuchstag = current_date()");/*, tempBesuch*/
+ DataTable tempFamily = await SQL.ReadSQL($"SELECT idfamily,concat('Führung: ', Name) AS Name, Name AS Verantwortlicher_MA_Firma, Name AS Ansprechpartner_Intern,TelNr AS Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.family WHERE `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}'");
+
+
+ Dispatcher.Invoke(() => Helper.FindVisualChildren(dgToday, "btnInfo").ToList().ForEach(q => q.Click -= BtnInfo_Click));
+
todayFirm = tempFirm;
todayBesuch = tempBesuch;
todayFamily = tempFamily;
}
- }
+ else
+ {
+ DataTable tempFirm = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.firmen where (Arbeitsbeginn <= current_date() AND Arbeitsende >= current_date()) AND (Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')");/*, todayFirm*/
+ DataTable tempBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Kleine_Unterweisung_bis,Oertlichkeit FROM {MainWindow.table}.besucher WHERE Besuchstag = current_date() AND (Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')");/*, todayBesuch*/
+ DataTable tempFamily = await SQL.ReadSQL($"SELECT concat('Führung: ', Name) AS Name, Name AS Verantwortlicher_MA_Firma, Name AS Ansprechpartner_Intern,TelNr AS Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.family WHERE `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' AND `User` = '{Environment.UserName}'");
- if (changeTable)
+
+ Dispatcher.Invoke(() => Helper.FindVisualChildren(dgToday, "btnInfo").ToList().ForEach(q => q.Click -= BtnInfo_Click));
+
+ todayFirm = tempFirm;
+ todayBesuch = tempBesuch;
+ todayFamily = tempFamily;
+
+ }
+
+ //if (changeTable)
+ //{
+ var firmview = todayFirm.DefaultView;
+
+ if (firmview.Table.Columns.Contains("Name"))
+ {
+ firmview.Sort = "Name";
+ todayFirm = firmview.ToTable();
+ }
+
+
+ var besuchview = todayBesuch.DefaultView;
+
+ if (besuchview.Table.Columns.Contains("Name"))
+ {
+ besuchview.Sort = "Name";
+ todayBesuch = besuchview.ToTable();
+ }
+
+
+ var familyview = todayFamily.DefaultView;
+
+ if (familyview.Table.Columns.Contains("Name"))
+ {
+ familyview.Sort = "Name";
+ todayFamily = familyview.ToTable();
+ }
+
+ todayBesuch.Merge(todayFamily);
+ //todayFirm.Merge(todayBesuch);
+ //todayFirm.Merge(todayFamily);
+
+ await Dispatcher.BeginInvoke(new Action(() =>
+ {
+ dgToday.DataContext = todayFirm;
+ dgTodayBesucher.DataContext = todayBesuch;
+ }));
+ //}
+ }
+ Dispatcher.Invoke(() => Helper.FindVisualChildren(dgToday, "btnInfo").ToList().ForEach(q =>
{
- var firmview = todayFirm.DefaultView;
-
- if (firmview.Table.Columns.Contains("Name"))
- {
- firmview.Sort = "Name";
- todayFirm = firmview.ToTable();
- }
-
-
- var besuchview = todayBesuch.DefaultView;
-
- if (besuchview.Table.Columns.Contains("Name"))
- {
- besuchview.Sort = "Name";
- todayBesuch = besuchview.ToTable();
- }
-
-
- var familyview = todayFamily.DefaultView;
-
- if (familyview.Table.Columns.Contains("Name"))
- {
- familyview.Sort = "Name";
- todayFamily = familyview.ToTable();
- }
-
- todayBesuch.Merge(todayFamily);
- //todayFirm.Merge(todayBesuch);
- //todayFirm.Merge(todayFamily);
-
- await Dispatcher.BeginInvoke(new Action(() =>
- {
- dgToday.DataContext = todayFirm;
- dgTodayBesucher.DataContext = todayBesuch;
- }));
- }
+ q.Click -= BtnInfo_Click;
+ q.Click += BtnInfo_Click;
+ }));
}
+
private async Task getZutritte()
{
- if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner)
+ try
{
- if (lastEntryZutritte == temp)
+ if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner || LoggedInRole == Roles.M2_AM)
{
- overv = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -10 DAY", overv);
- lastEntryZutritte = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
+
+ if (lastEntryZutritte == temp)
+ {
+ overv = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -10 DAY", overv);
+
+ if (!DateTime.TryParse(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"), out lastEntryZutritte))
+ lastEntryZutritte = DateTime.MinValue;
+ }
+ else
+ {
+ DateTime sqlTime = DateTime.MinValue;
+ if (!DateTime.TryParse(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"), out sqlTime)) //Read newest Zutritt TimeStamp
+ sqlTime = DateTime.MaxValue; //if not parseable write Max Time as Failsafe
+
+
+ if (lastEntryZutritte < sqlTime)
+ {
+ DataTable temp = new DataTable("temp");
+
+ temp = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt > '{lastEntryZutritte.ToString("yyyy-MM-dd HH:mm:ss")}'", temp);
+ if (!DateTime.TryParse(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"), out lastEntryZutritte))
+ lastEntryZutritte = DateTime.MaxValue;
+
+ Dispatcher.Invoke(() => overv.Merge(temp));
+
+
+ ShowToast(temp);
+ }
+ }
}
else
{
- DateTime sqlTime = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
- if (lastEntryZutritte < sqlTime)
+ var vertAspName = SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
+ var nameAspVert = SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
+
+ if (lastEntryZutritte == temp)
{
- DataTable temp = new DataTable("temp");
-
- temp = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt > '{lastEntryZutritte.ToString("yyyy-MM-dd HH:mm:ss")}'", temp);
- lastEntryZutritte = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
-
- overv.Merge(temp);
-
-
- ShowToast(temp);
- }
- }
- }
- else
- {
- var vertAspName = SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
- var nameAspVert = SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
-
- if (lastEntryZutritte == temp)
- {
- overv = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -10 DAY AND (idFirma_Besucher IN (select idfirmen from zkup.firmen where Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{vertAspName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
- $"OR Ersteller = '{nameAspVert}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}') " +
- $"OR idFirma_Besucher IN (select idbesucher from {MainWindow.table}.besucher where Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{vertAspName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
- $"OR Ersteller = '{nameAspVert}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'))", overv);
-
- lastEntryZutritte = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
- }
- else
- {
- DateTime sqlTime = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
- if (lastEntryZutritte < sqlTime)
- {
- DataTable temp = new DataTable("temp");
-
- temp = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt > '{lastEntryZutritte.ToString("yyyy-MM-dd HH:mm:ss")}' AND (idFirma_Besucher IN (select idfirmen from zkup.firmen where Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{vertAspName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
- $"OR Ersteller = '{nameAspVert}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}') " +
- $"OR idFirma_Besucher IN (select idbesucher from {MainWindow.table}.besucher where Ersteller = '{Environment.UserName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
- $"OR Ersteller = '{vertAspName}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
- $"OR Ersteller = '{nameAspVert}' " +
- $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
- $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'))", temp);
-
+ overv = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -10 DAY AND (idFirma_Besucher IN (select idfirmen from {MainWindow.table}.firmen where Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{vertAspName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
+ $"OR Ersteller = '{nameAspVert}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}') " +
+ $"OR idFirma_Besucher IN (select idbesucher from {MainWindow.table}.besucher where Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{vertAspName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
+ $"OR Ersteller = '{nameAspVert}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'))", overv);
lastEntryZutritte = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
+ }
+ else
+ {
+ DateTime sqlTime = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
+ if (lastEntryZutritte < sqlTime)
+ {
+ DataTable temp = new DataTable("temp");
- overv.Merge(temp);
+ temp = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt > '{lastEntryZutritte.ToString("yyyy-MM-dd HH:mm:ss")}' AND (idFirma_Besucher IN (select idfirmen from {MainWindow.table}.firmen where Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{vertAspName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
+ $"OR Ersteller = '{nameAspVert}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}') " +
+ $"OR idFirma_Besucher IN (select idbesucher from {MainWindow.table}.besucher where Ersteller = '{Environment.UserName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
+ $"OR Ersteller = '{vertAspName}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
+ $"OR Ersteller = '{nameAspVert}' " +
+ $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
+ $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'))", temp);
- ShowToast(temp);
+
+ lastEntryZutritte = Convert.ToDateTime(await SQL.ReadSingleValueAsync($"SELECT MAX(Zutritt) FROM {MainWindow.table}.zutritte"));
+
+ Dispatcher.Invoke(() => overv.Merge(temp));
+
+ ShowToast(temp);
+ }
}
}
- }
- //Dispatcher.Invoke(() => dgOverview.Columns.FirstOrDefault(c => c.Header.ToString() == "Zutritt").SortDirection = ListSortDirection.Descending);
- await Dispatcher.BeginInvoke(new Action(() =>
+ //Dispatcher.Invoke(() => dgOverview.Columns.FirstOrDefault(c => c.Header.ToString() == "Zutritt").SortDirection = ListSortDirection.Descending);
+ await Dispatcher.InvokeAsync((() =>
+ {
+ if (dgOverview.CurrentItem != null)
+ {
+ if ((dgOverview.CurrentItem as DataRowView).IsEdit == true) return;
+
+ dgOverview.Items.SortDescriptions.Clear();
+ dgOverview.Items.SortDescriptions.Add(new SortDescription("Zutritt", ListSortDirection.Descending));
+ dgOverview.Items.Refresh();
+ }
+ }));
+ }
+ catch (Exception ex)
{
- dgOverview.Items.SortDescriptions.Clear();
- dgOverview.Items.SortDescriptions.Add(new SortDescription("Zutritt", ListSortDirection.Descending));
- dgOverview.Items.Refresh();
- }));
+ Log.WriteLog($"getZutritte: {ex.ToString()}");
+//#warning No Release Do not throw
+// throw;
+ }
}
private async void getHinweis()
@@ -1286,30 +1694,44 @@ namespace ZKuP
//if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner)
//{
- var park = await SQL.ReadListString($"SELECT Parkplatz FROM {MainWindow.table}.`be-belegung` WHERE Parkplatz IS NOT null AND (CURDATE() BETWEEN b1von AND b1bis) OR (CURDATE() BETWEEN b2von AND b2bis) OR (CURDATE() BETWEEN b3von AND b3bis)");
- var singlePark = await SQL.ReadListString($"SELECT parkplatznr FROM {MainWindow.table}.`parkplaetze`");
-
+ var park = await SQL.ReadListString($"SELECT Parkplatz FROM {MainWindow.table}.`beParkplaetze` LEFT JOIN {MainWindow.table}.`beBelegung` ON beParkplaetze.beNr = beBelegung.beNr WHERE Parkplatz IS NOT null AND CURDATE() BETWEEN beBelegung.von AND beBelegung.bis");
+ //var singlePark = await SQL.ReadDictionary2($"SELECT parkplatznr, FROM {MainWindow.table}.`parkplaetze`", 0 , 1);
+ var singlePark = await SQL.ReadDictionary2($"SELECT p.parkplatznr, f.Name FROM {MainWindow.table}.parkplaetze p LEFT JOIN {MainWindow.table}.firmen f ON f.idFirmen = p.firma", 0, 1);
string list = "";
list = string.Join("", park);
- park = list.Split(';').ToList();
+ park = list.Split(',').ToList();
park = park.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
+
+ for(var p = 0; p < park.Count; p++) park[p] = park[p].PadLeft(2, '0');
- park.AddRange(singlePark);
+ var justPark = park.ToList();
+
+ park.AddRange(singlePark.Keys);
+
+
+ var allBe = await SQL.ReadDictionary2($"SELECT beNr,Parkplatz FROM {MainWindow.table}.beParkplaetze WHERE Parkplatz IS NOT NULL", 0, 1);
+ //var allBe = await SQL.ReadSingleValueAsync($"SELECT beNr FROM {MainWindow.table}.beParkplaetze WHERE Parkplatz LIKE '%{nr},%'");
await Dispatcher.BeginInvoke(new Action(() =>
{
var rects = BE.Children.OfType();
+ var tbs = BE.Children.OfType().ToList();
foreach (Rectangle s in rects)
{
- if (park.Contains(s.Name.TrimStart('P')))
+ if (park.Contains(s.Name.TrimStart('P').PadLeft(2,'0')))
{
//var x = Helper.FindVisualChildren(BE, s.Name).First();
s.Fill = new SolidColorBrush(Colors.Red);
+ var x = singlePark.TryGetValue(s.Name.TrimStart('P'), out string y);
+ var sp = tbs.First(p => p.Text == s.Name.TrimStart('P')).ToolTip as StackPanel;
+
+ if (singlePark.ContainsKey(s.Name.TrimStart('P')) && x && !string.IsNullOrWhiteSpace(y) && sp.Children[sp.Children.Count - 1].GetType() != typeof(TextBlock))
+ sp.Children.Add(new TextBlock() { Text = $"Ausgegeben an {y}" });
}
else if (!s.Name.StartsWith("Red"))
{
@@ -1318,7 +1740,7 @@ namespace ZKuP
}
- var rectsG = BesuchP.Children.OfType();
+ var rectsG = BesuchP.Children.OfType().First().Children.OfType();
foreach (Rectangle s in rectsG)
{
@@ -1334,8 +1756,49 @@ namespace ZKuP
}
+ foreach (Rectangle rect in Helper.FindVisualChildren(BE).Where(p => p.Fill.ToString() == Brushes.Red.ToString()))
+ {
+ StackPanel sp = new StackPanel();
+
+ var nr = rect.Name.TrimStart('P').PadLeft(2, '0');
+
+ if (justPark.Contains(nr))
+ {
+ var be = "";
+
+ var match = allBe.FirstOrDefault(kvp => kvp.Value.Contains($"{nr},"));
+ if (!EqualityComparer.Default.Equals(match.Key, default))
+ {
+ be = match.Key.ToString().PadLeft(2, '0');
+ }
+ //Helper.FindVisualChildren(BE, nr).First();
+
+ if (!string.IsNullOrWhiteSpace(be))
+ {
+ var img = new BitmapImage(new Uri(@"pack://application:,,,/"
+ + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ + ";component/"
+ + $"{Helper.GetBEFileNames(Convert.ToInt16(be))}", UriKind.Absolute));
+
+ sp.Children.Add(new TextBlock() { Text = $"{Helper.GetBEDescription(Convert.ToInt16(be))}", FontWeight = FontWeights.Bold });
+ sp.Children.Add(new Image() { Source = img, Width = img.Width / 1.5, Height = img.Height / 1.5 });
+
+
+ //rect.ToolTip = sp;
+ var tb = BE.FindChildren().Where(p => p.Text == nr.TrimStart('0')).First();
+ tb.ToolTip = sp;
+ tb.PreviewMouseLeftButtonDown -= ParkSetPreviewMouseLeftButtonDown;
+
+ rect.Fill = new SolidColorBrush(Colors.Orange);
+ }
+
+ }
+ }
+
+
+
lblGreenCounter.Text = rects.Where(p => p.Fill.ToString() == Brushes.Green.ToString()).Count().ToString();
- lblRedCounter.Text = rects.Where(p => p.Fill.ToString() == Brushes.Red.ToString()).Count().ToString();
+ lblRedCounter.Text = rects.Where(p => p.Fill.ToString() == Brushes.Red.ToString() || p.Fill.ToString() == Brushes.Orange.ToString()).Count().ToString();
}));
//}
}
@@ -1381,38 +1844,41 @@ namespace ZKuP
var bright = dark ? 100 : 50;
var col = ColorHelper.ColorConverter.HsvToRgb(new HSV((100 / maxBikes) * (maxBikes - Convert.ToInt16(i)), 100, (byte)bright));
- lblBike.Text = $"{i} / {maxBikes}";
- lblBike.Foreground = new SolidColorBrush(Color.FromRgb(col.R, col.G, col.B));
+ Dispatcher.Invoke(() =>
+ {
+ lblBike.Text = $"{i} / {maxBikes}";
+ lblBike.Foreground = new SolidColorBrush(Color.FromRgb(col.R, col.G, col.B));
- if (Convert.ToInt16(i) == maxBikes)
- {
- btnBikeIn.IsEnabled = imgBikeIn.IsEnabled = false;
- btnBikeIn.Background = new SolidColorBrush(Colors.Gray);
- imgBikeIn.Opacity = 0.5;
- btnBikeIn.ToolTip = imgBikeIn.ToolTip = "Keine Einfahrt mehr, da alle Kraftradparkplätze voll";
- }
- else
- {
- btnBikeIn.IsEnabled = imgBikeIn.IsEnabled = true;
- btnBikeIn.Background = new SolidColorBrush(Colors.PaleVioletRed);
- imgBikeIn.Opacity = 1;
- btnBikeIn.ToolTip = imgBikeIn.ToolTip = "Kraftrad fährt ein";
- }
+ if (Convert.ToInt16(i) == maxBikes)
+ {
+ btnBikeIn.IsEnabled = imgBikeIn.IsEnabled = false;
+ btnBikeIn.Background = new SolidColorBrush(Colors.Gray);
+ imgBikeIn.Opacity = 0.5;
+ btnBikeIn.ToolTip = imgBikeIn.ToolTip = "Keine Einfahrt mehr, da alle Kraftradparkplätze voll";
+ }
+ else
+ {
+ btnBikeIn.IsEnabled = imgBikeIn.IsEnabled = true;
+ btnBikeIn.Background = new SolidColorBrush(Colors.PaleVioletRed);
+ imgBikeIn.Opacity = 1;
+ btnBikeIn.ToolTip = imgBikeIn.ToolTip = "Kraftrad fährt ein";
+ }
- if (Convert.ToInt16(i) == 0)
- {
- btnBikeOut.IsEnabled = imgBikeOut.IsEnabled = false;
- btnBikeOut.Background = new SolidColorBrush(Colors.Gray);
- imgBikeOut.Opacity = 0.5;
- btnBikeOut.ToolTip = imgBikeOut.ToolTip = "Kein Kraftrad mehr im Werk";
- }
- else
- {
- btnBikeOut.IsEnabled = imgBikeOut.IsEnabled = true;
- btnBikeOut.Background = new SolidColorBrush(Colors.LightGreen);
- imgBikeOut.Opacity = 1;
- btnBikeOut.ToolTip = imgBikeOut.ToolTip = "Kraftrad fährt aus";
- }
+ if (Convert.ToInt16(i) == 0)
+ {
+ btnBikeOut.IsEnabled = imgBikeOut.IsEnabled = false;
+ btnBikeOut.Background = new SolidColorBrush(Colors.Gray);
+ imgBikeOut.Opacity = 0.5;
+ btnBikeOut.ToolTip = imgBikeOut.ToolTip = "Kein Kraftrad mehr im Werk";
+ }
+ else
+ {
+ btnBikeOut.IsEnabled = imgBikeOut.IsEnabled = true;
+ btnBikeOut.Background = new SolidColorBrush(Colors.LightGreen);
+ imgBikeOut.Opacity = 1;
+ btnBikeOut.ToolTip = imgBikeOut.ToolTip = "Kraftrad fährt aus";
+ }
+ });
}
@@ -1561,68 +2027,119 @@ namespace ZKuP
- private void Ausfahrt_Click(object sender, RoutedEventArgs e)
+ private async void Ausfahrt_Click(object sender, RoutedEventArgs e)
{
- FahrzeugAusfahrt(sender as Button);
+ ContextMenu menu = new ContextMenu();
+ menu.Width = 350;
+
+
+ var result = await SQL.ReadListStringMultipleColumns($"SELECT arrivalTime, fzgType, firma, fahrer, kennzeichen FROM {MainWindow.table}.fzgTime WHERE fzgType = '{(sender as Button).Name.ToString().Replace("btn", "")}'", 5);
+
+ foreach (var item in result)
+ {
+ var s = item.Split(';');
+ var i = new MenuItem();
+ i.Click += AusfahrMenu_Click;
+ i.Header = $"Firma:\t\t\t{s[2]}\nFahrer:\t\t\t{s[3]}\nKennzeichen:\t\t{s[4]}\nEingefahren:\t\t{Convert.ToDateTime(s[0].ToString()).ToString("HH:mm dd.MM.")}";
+ i.Tag = s[1];
+ menu.Items.Add(i);
+ }
+
+ (sender as Button).ContextMenu = menu;
+ (sender as Button).ContextMenu.IsOpen = true;
+
}
+ private void AusfahrMenu_Click(object sender, RoutedEventArgs e)
+ {
+ FahrzeugAusfahrt((sender as MenuItem));
+ }
- private void FahrzeugAusfahrt(Button button)
+ private void FahrzeugAusfahrt(MenuItem button)
{
int i = 0;
string query = "";
+ string fzgTime = "";
- switch (button.Name.ToString().Replace("btn",""))
+ var firma = button.Header.ToString().Split('\t');
+
+ switch (button.Tag.ToString())
{
case "LKWLang":
- i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT lkwlang FROM {MainWindow.table}.fahrzeuge"));
- query = ($"UPDATE zkup.fahrzeuge SET `lkwlang`='{i - 1}'");
+ //i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT lkwlang FROM {MainWindow.table}.fahrzeuge"));
+ fzgTime = ($"DELETE FROM {MainWindow.table}.fzgTime WHERE fzgType = 'LKWLang' AND firma = '{firma[3].Split('\n')[0]}' AND fahrer = '{firma[6].Split('\n')[0]}' AND kennzeichen = '{firma[8].Split('\n')[0]}'");
+
+ if (!string.IsNullOrWhiteSpace(fzgTime))
+ i = SQL.WriteSQLwithReturn(fzgTime).Result;
+
+ query = ($"UPDATE {MainWindow.table}.fahrzeuge SET lkwlang=lkwlang-{i}");
+ notifiedKennzeichen.Remove(firma[8].Split('\n')[0]);
break;
case "LKW":
- i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT lkw FROM {MainWindow.table}.fahrzeuge"));
- query = ($"UPDATE zkup.fahrzeuge SET `lkw`='{i - 1}'");
+ //i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT lkw FROM {MainWindow.table}.fahrzeuge"));
+ fzgTime = ($"DELETE FROM {MainWindow.table}.fzgTime WHERE fzgType = 'LKW' AND firma = '{firma[3].Split('\n')[0]}' AND fahrer = '{firma[6].Split('\n')[0]}' AND kennzeichen = '{firma[8].Split('\n')[0]}'");
+
+ if (!string.IsNullOrWhiteSpace(fzgTime))
+ i = SQL.WriteSQLwithReturn(fzgTime).Result;
+
+ query = ($"UPDATE {MainWindow.table}.fahrzeuge SET lkw=lkw-{i}");
+ notifiedKennzeichen.Remove(firma[8].Split('\n')[0]);
break;
case "Sprinter":
- i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT sprinter FROM {MainWindow.table}.fahrzeuge"));
- query = ($"UPDATE zkup.fahrzeuge SET `sprinter`='{i - 1}'");
+ //i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT sprinter FROM {MainWindow.table}.fahrzeuge"));
+ fzgTime = ($"DELETE FROM {MainWindow.table}.fzgTime WHERE fzgType = 'Sprinter' AND firma = '{firma[3].Split('\n')[0]}' AND fahrer = '{firma[6].Split('\n')[0]}' AND kennzeichen = '{firma[8].Split('\n')[0]}'");
+
+ if (!string.IsNullOrWhiteSpace(fzgTime))
+ i = SQL.WriteSQLwithReturn(fzgTime).Result;
+
+ query = ($"UPDATE {MainWindow.table}.fahrzeuge SET sprinter=sprinter-{i}");
+ notifiedKennzeichen.Remove(firma[8].Split('\n')[0]);
break;
case "PKW":
- i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT pkw FROM {MainWindow.table}.fahrzeuge"));
- query = ($"UPDATE {MainWindow.table}.fahrzeuge SET `pkw`='{i - 1}'");
+ //i = Convert.ToInt16(SQL.ReadSingleValue($"SELECT pkw FROM {MainWindow.table}.fahrzeuge"));
+ fzgTime = ($"DELETE FROM {MainWindow.table}.fzgTime WHERE fzgType = 'PKW' AND firma = '{firma[3].Split('\n')[0]}' AND fahrer = '{firma[6].Split('\n')[0]}' AND kennzeichen = '{firma[8].Split('\n')[0]}'");
+
+ if (!string.IsNullOrWhiteSpace(fzgTime))
+ i = SQL.WriteSQLwithReturn(fzgTime).Result;
+
+ query = ($"UPDATE {MainWindow.table}.fahrzeuge SET pkw=pkw-{i}");
+ notifiedKennzeichen.Remove(firma[8].Split('\n')[0]);
break;
}
if (!string.IsNullOrWhiteSpace(query))
SQL.WriteSQL(query);
+
getFahrzeuge();
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var x = (sender as TextBox).Text;
+ var source = (dgToday.ItemsSource as DataView);
if (!string.IsNullOrWhiteSpace(x))
{
var filter = ($"Name LIKE '%{x}%' OR Ansprechpartner_Intern LIKE '%{x}%' OR Verantwortlicher_MA_Firma LIKE '%{x}%'");
- todayFirm.DefaultView.RowFilter = filter;
+ source.RowFilter = filter;
- if (todayFirm.DefaultView.Count == 0)
+ if (source.Count == 0)
{
List similarities = new List();
- foreach (var item in todayFirm.Rows)
+ foreach (var item in source.Table.Rows)
{
var ratio = Fuzz.Ratio((sender as TextBox).Text.ToLower(), (item as DataRow).ItemArray[1].ToString().ToLower());
- if (ratio > 40)
+ if (ratio > 60)
similarities.Add((item as DataRow).ItemArray[1].ToString());
ratio = Fuzz.Ratio((sender as TextBox).Text.ToLower(), (item as DataRow).ItemArray[2].ToString().ToLower());
- if (ratio > 40)
+ if (ratio > 60)
similarities.Add((item as DataRow).ItemArray[2].ToString());
ratio = Fuzz.Ratio((sender as TextBox).Text.ToLower(), (item as DataRow).ItemArray[10].ToString().ToLower());
- if (ratio > 40)
+ if (ratio > 60)
similarities.Add((item as DataRow).ItemArray[10].ToString());
}
@@ -1650,29 +2167,36 @@ namespace ZKuP
str.Remove(str.Length - 37, 37);
- todayFirm.DefaultView.RowFilter = str.ToString();
+ source.RowFilter = str.ToString();
}
else
{
- todayFirm.DefaultView.RowFilter = "";
+ source.RowFilter = "";
//dgFirmen.DataContext = new DataTable();
}
+ //}
+
}
}
- //if (dgOverview != null) todayFirm.DefaultView.RowFilter = $"Name like '%{(sender as TextBox).Text}%' OR Ansprechpartner_Intern like '%{(sender as TextBox).Text}%' OR Verantwortlicher_MA_Firma like '%{(sender as TextBox).Text}%'";
+ else
+ {
+ source.RowFilter = "";
+ //dgFirmen.DataContext = new DataTable();
+ }
+ //if (dgOverview != null) todayFirm.DefaultView.RowFilter = $"Name like '%{(sender as TextBox).Text}%' OR Ansprechpartner_Intern like '%{(sender as TextBox).Text}%' OR Verantwortlicher_MA_Firma like '%{(sender as TextBox).Text}%'";
- if (string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Visible;
- if (!string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Collapsed;
+ // if (string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Visible;
+ //if (!string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Collapsed;
}
private void TbSearch_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
- lblSearch.Visibility = Visibility.Collapsed;
+ //lblSearch.Visibility = Visibility.Collapsed;
}
private void TbSearch_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
- if (string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Visible;
+ //if (string.IsNullOrWhiteSpace((sender as TextBox).Text)) lblSearch.Visibility = Visibility.Visible;
}
@@ -1833,9 +2357,14 @@ namespace ZKuP
//else if ((dgToday.SelectedValue as DataRowView).Row.ItemArray[1].ToString().StartsWith("Führung:"))
// arrivals = new Arrivals(this, (int)(dgToday.SelectedValue as DataRowView).Row.ItemArray[22], 2, (dgToday.SelectedValue as DataRowView).Row.ItemArray[2].ToString());
//else
- arrivals = new Arrivals(this, (int)(dgToday.SelectedValue as DataRowView).Row.ItemArray[0]);
+
+ var res = -1;
+ int.TryParse((dgToday.SelectedValue as DataRowView).Row.ItemArray[0].ToString(), out res);
+
+ arrivals = new Arrivals(this, res);
arrivals.Owner = this;
+
arrivals.Show();
arrivals.Closed -= Arrivals_Closed;
@@ -1846,10 +2375,18 @@ namespace ZKuP
Arrivals arrivals = null;
if ((dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[1].ToString().StartsWith("Besucher:"))
- arrivals = new Arrivals(this, (int)(dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[0], 1);
+ {
+ var res = -1;
+ int.TryParse((dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[0].ToString(), out res);
+ arrivals = new Arrivals(this, res, 1);
+ }
//(dgToday.SelectedValue as DataRowView).Row.ItemArray[1].ToString().Replace("Besucher: ", ""));
else if ((dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[1].ToString().StartsWith("Führung:"))
- arrivals = new Arrivals(this, (int)(dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[0], 2, (dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[2].ToString());
+ {
+ var res = -1;
+ int.TryParse((dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[0].ToString(), out res);
+ arrivals = new Arrivals(this, res, 2, (dgTodayBesucher.SelectedValue as DataRowView).Row.ItemArray[2].ToString());
+ }
//else
// arrivals = new Arrivals(this, (int)(dgToday.SelectedValue as DataRowView).Row.ItemArray[0]);
@@ -1895,6 +2432,11 @@ namespace ZKuP
{
kat = "3";
}
+ else if((dc).Row.ItemArray[1].ToString().StartsWith("Besucher:"))
+ {
+ id = (int)(dc).Row.ItemArray[0];
+ kat = "2";
+ }
else
{
if ((dc).Row.ItemArray[7].ToString() != "")
@@ -1902,11 +2444,6 @@ namespace ZKuP
id = (int)(dc).Row.ItemArray[0];
kat = "1";
}
- else
- {
- id = (int)(dc).Row.ItemArray[17];
- kat = "2";
- }
}
AspInfo aI = new AspInfo(id, kat, 1);
@@ -1976,18 +2513,28 @@ namespace ZKuP
{
if (Main.Visibility == Visibility.Visible)
{
- Properties.Settings.Default.Save();
+ if(gridSplitterVertical.Visibility == Visibility.Visible)
+ {
+ // Aktuelle Column-Breiten speichern
+ Settings.WriteSetting("LeftColumn", gridToday.ColumnDefinitions[0].Width.Value);
+ Settings.WriteSetting("RightColumn", gridToday.ColumnDefinitions[2].Width.Value);
+ }
+
+ Settings.WriteSetting("WindowState", this.WindowState);
+
+ Settings.Save();
+ //Properties.Settings.Default.Save();
}
}
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
#if DEBUG
- if (e.Key == Key.LeftCtrl)
- BesucherCreateStart();
+ //if (e.Key == Key.LeftCtrl)
+ // BesucherCreateStart();
- if(e.Key == Key.RightCtrl)
- Helper.SendMail("testTesttest");
+ //if(e.Key == Key.RightCtrl)
+ // Helper.SendMail("testTesttest");
#endif
}
@@ -2018,7 +2565,7 @@ namespace ZKuP
switch (header)
{
case "Kennzeichen":
- await SQL.WriteSQL($"UPDATE zutritte SET Kennzeichen = '{newValue}' WHERE idzutritte = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.zutritte SET Kennzeichen = '{newValue}' WHERE idzutritte = '{id}'");
break;
}
@@ -2141,7 +2688,7 @@ namespace ZKuP
private void btnBelegung_Click(object sender, RoutedEventArgs e)
{
this.Cursor = Cursors.Wait;
- Belegung2 be = new Belegung2();
+ Belegung be = new Belegung();
be.Owner = this;
be.ShowDialog();
@@ -2164,6 +2711,13 @@ namespace ZKuP
nTf.ShowDialog();
}
+ private void btnApproveFzg_Click(object sender, RoutedEventArgs e)
+ {
+ ApproveFzg fzg = new ApproveFzg();
+ fzg.Owner = this;
+ fzg.Show();
+ }
+
@@ -2177,7 +2731,7 @@ namespace ZKuP
var vertAspName = SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
var nameAspVert = SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
- var check = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -20 SECOND AND (idFirma_Besucher IN (select idfirmen from zkup.firmen where Ersteller = '{Environment.UserName}' " +
+ var check = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.zutritte where Zutritt >= now() + INTERVAL -20 SECOND AND (idFirma_Besucher IN (select idfirmen from {MainWindow.table}.firmen where Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{vertAspName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
@@ -2274,30 +2828,38 @@ namespace ZKuP
private async void btnSettings_Click(object sender, RoutedEventArgs e)
{
QueryParkEmailUsers();
+ QueryFzgAnmeldungEmailUsers();
canvasSettings.Visibility = Visibility.Visible;
- cbShowParkcardToAccept.IsChecked = Properties.Settings.Default.ShowParkcardAccept;
- cbShowParkcardToPrint.IsChecked = Properties.Settings.Default.ShowParkcardPrint;
+
+ cbShowParkcardToAccept.IsChecked = Settings.GetSettingBool("ShowParkcardAccept");
+ cbShowParkcardToPrint.IsChecked = Settings.GetSettingBool("ShowParkcardPrint");
+ //cbShowParkcardToAccept.IsChecked = Properties.Settings.Default.ShowParkcardAccept;
+ //cbShowParkcardToPrint.IsChecked = Properties.Settings.Default.ShowParkcardPrint;
}
private void cbShowParkcardToAccept_Checked(object sender, RoutedEventArgs e)
{
- Properties.Settings.Default.ShowParkcardAccept = true;
+ Settings.WriteSetting("ShowParkcardAccept", true);
+ //Properties.Settings.Default.ShowParkcardAccept = true;
}
private void cbShowParkcardToAccept_Unchecked(object sender, RoutedEventArgs e)
{
- Properties.Settings.Default.ShowParkcardAccept = false;
+ Settings.WriteSetting("ShowParkcardAccept", false);
+ //Properties.Settings.Default.ShowParkcardAccept = false;
}
private void cbShowParkcardToPrint_Checked(object sender, RoutedEventArgs e)
{
- Properties.Settings.Default.ShowParkcardPrint = true;
+ Settings.WriteSetting("ShowParkcardPrint", true);
+ //Properties.Settings.Default.ShowParkcardPrint = true;
}
private void cbShowParkcardToPrint_Unchecked(object sender, RoutedEventArgs e)
{
- Properties.Settings.Default.ShowParkcardPrint = false;
+ Settings.WriteSetting("ShowParkcardPrint", false);
+ //Properties.Settings.Default.ShowParkcardPrint = false;
}
@@ -2326,6 +2888,74 @@ namespace ZKuP
}
}
+
+
+ private void btnAddFzgAnmeldungUser_Click(object sender, RoutedEventArgs e)
+ {
+ tbFzgAnmeldungUserEmail.Text = "@deutschebahn.com";
+
+ popFzgAnmeldung.IsOpen = true;
+ tbFzgAnmeldungUserEmail.Focus();
+ }
+
+ private async void btnDelFzgAnmeldungUser_Click(object sender, RoutedEventArgs e)
+ {
+ if (dgFzgAnmeldungUsers.SelectedIndex != -1)
+ {
+ int id = (int)(dgFzgAnmeldungUsers.SelectedItem as DataRowView).Row.ItemArray[0];
+
+ if (MessageBox.Show($"Möchten Sie den Empfänger {(dgFzgAnmeldungUsers.SelectedItem as DataRowView).Row.ItemArray[1]} wirklich löschen?", "Sicher löschen?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
+ {
+ var command = new MySqlCommand($"DELETE FROM {MainWindow.table}.fzgAnmeldungEmail WHERE idfzgAnmeldungEmail = @id");
+ command.Parameters.Add(new MySqlParameter("id", id));
+ await SQL.WriteSQL(command);
+
+
+ QueryFzgAnmeldungEmailUsers();
+ }
+ }
+ }
+
+ private async Task QueryFzgAnmeldungEmailUsers()
+ {
+ FzgAnmeldungEmailUsers = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.fzgAnmeldungEmail");
+ dgFzgAnmeldungUsers.ItemsSource = FzgAnmeldungEmailUsers.DefaultView;
+ }
+
+ private void AddFzgAnmeldungEmailUserTextBox_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key == Key.Enter)
+ {
+ AddFzgAnmeldungEmailUser();
+ popFzgAnmeldung.IsOpen = false;
+ }
+ }
+ private void AddFzgAnmeldungEmailUserAdd_Click(object sender, RoutedEventArgs e)
+ {
+ AddFzgAnmeldungEmailUser();
+ popFzgAnmeldung.IsOpen = false;
+ }
+
+ private async void AddFzgAnmeldungEmailUser()
+ {
+ if (!string.IsNullOrWhiteSpace(tbFzgAnmeldungUserEmail.Text))
+ {
+ string name = Helper.GetNameFromMail(tbFzgAnmeldungUserEmail.Text);
+ if (name == "-1") return;
+
+ var command = new MySqlCommand($"INSERT INTO {MainWindow.table}.fzgAnmeldungEmail (Email, Name, ModifiedBy, ModifiedAt) VALUES (@pEmail, @pName, @pModifiedBy, @pModifiedAt)");
+ command.Parameters.Add(new MySqlParameter("pName", name));
+ command.Parameters.Add(new MySqlParameter("pEmail", tbFzgAnmeldungUserEmail.Text));
+ command.Parameters.Add(new MySqlParameter("pModifiedBy", Environment.UserName));
+ command.Parameters.Add(new MySqlParameter("pModifiedAt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
+
+ await SQL.WriteSQL(command);
+
+ QueryFzgAnmeldungEmailUsers();
+ }
+ }
+
+
private async Task QueryParkEmailUsers()
{
ParkEmailUsers = await SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkEmailUsers");
@@ -2368,32 +2998,72 @@ namespace ZKuP
private void btnCloseSettings_Click(object sender, RoutedEventArgs e)
{
canvasSettings.Visibility = Visibility.Collapsed;
- Properties.Settings.Default.Save();
+ Settings.Save();
+ //Properties.Settings.Default.Save();
}
- private void gridSplitter_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
+
+
+ private void gridSplitter_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
- double maxheight = this.ActualHeight - 120 - 191;
- double actualheight = this.ActualHeight - 120 - gridBackground.RowDefinitions[1].Height.Value;
- if (actualheight <= 191) gridBackground.RowDefinitions[1].Height = new GridLength(maxheight);
+ GridSplitter splitter = sender as GridSplitter;
+ Window window = Window.GetWindow(splitter);
+
+ splitter.UpdateLayout();
+
+ Point splitterPosition = splitter.TransformToAncestor(window).Transform(new Point(0, 0));
+
+ if (splitterPosition.Y > (this.ActualHeight - 190))
+ {
+ e.Handled = true; // Bewegung stoppen
+ gridRowTop.Height = new GridLength(this.ActualHeight - 160 - 190);
+ }
}
+
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
- double maxheight = this.ActualHeight - 120 - 195;
- double actualheight = this.ActualHeight - 120 - gridBackground.RowDefinitions[1].Height.Value;
- if (actualheight <= 195)
- {
- gridBackground.RowDefinitions[1].Height = new GridLength(maxheight);
- return;
- }
//if(e.NewSize.Height > e.PreviousSize.Height)
- gridBackground.RowDefinitions[1].Height = new GridLength(gridBackground.RowDefinitions[1].Height.Value + (e.NewSize.Height - e.PreviousSize.Height));
+
+ var height = new GridLength(gridBackground.RowDefinitions[1].Height.Value + (e.NewSize.Height - e.PreviousSize.Height));
+
+ if (height.Value > 0)
+ gridBackground.RowDefinitions[1].Height = height;
//else
// gridBackground.RowDefinitions[1].Height = new GridLength(gridBackground.RowDefinitions[1].Height.Value + (e.PreviousSize.Height - e.NewSize.Height));
System.Diagnostics.Debug.WriteLine("WindowSize: " + this.Width );
+
+ if (this.WindowState == WindowState.Normal && ReadyToSavePosition)
+ {
+ Settings.WriteSetting("Width", this.Width);
+ Settings.WriteSetting("Height", this.Height);
+ }
+
+
+
+ //double maxheight = this.ActualHeight - 120 - 195;
+ //double actualheight = this.ActualHeight - 120 - gridBackground.RowDefinitions[1].Height.Value;
+ //if (actualheight <= 195)
+ //{
+ // gridBackground.RowDefinitions[1].Height = new GridLength(maxheight);
+ // return;
+ //}
+
+ //Helper.CheckScale(this);
+ }
+
+ private void MetroWindow_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+
+ if (ReadyToSavePosition)
+ {
+ Settings.WriteSetting("Top", this.Top);
+ Settings.WriteSetting("Left", this.Left);
+ }
+ //Helper.CheckScale(this);
}
private void btnIvoBackground_Click(object sender, RoutedEventArgs e)
@@ -2419,6 +3089,17 @@ namespace ZKuP
{
var parkplatz = (sender as TextBlock).Text;
+ if ((parkplatz == "7" && BE.Children.OfType().Where(p => p.Name == $"P7").First().Fill.ToString() == Colors.Green.ToString()))
+ MessageBox.Show("Dieser Parkplatz darf nur an DB Energie vergeben werden!", "DB Energie Parkplatz", MessageBoxButton.OK, MessageBoxImage.Information);
+ if ((parkplatz == "34" && BE.Children.OfType().Where(p => p.Name == $"P34").First().Fill.ToString() == Colors.Green.ToString()))
+ MessageBox.Show("Dieser Parkplatz darf nur an DB Energie vergeben werden!", "DB Energie Parkplatz", MessageBoxButton.OK, MessageBoxImage.Information);
+
+ if (parkplatz == "6" && BE.Children.OfType().Where(p => p.Name == $"P6").First().Fill.ToString() == Colors.Green.ToString())
+ MessageBox.Show("Dieser Parkplatz darf nur an DB InfraGO vergeben werden!", "DB InfraGO Parkplatz", MessageBoxButton.OK, MessageBoxImage.Information);
+
+
+
+
foreach (var rect in BE.Children.OfType())
{
if (rect.Name == "P" + parkplatz)
@@ -2426,12 +3107,18 @@ namespace ZKuP
if (rect.Fill.ToString() == Colors.Red.ToString())
{
rect.Fill = new SolidColorBrush(Colors.Green);
- await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkplaetze WHERE parkplatznr={parkplatz}");
+ //await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkplaetze WHERE parkplatznr={parkplatz}");
+ var command = new MySqlCommand($"DELETE FROM {MainWindow.table}.parkplaetze WHERE parkplatznr = @pParkplatz");
+ command.Parameters.Add(new MySqlParameter("pParkplatz", parkplatz));
+ await SQL.WriteSQL(command);
}
else if (rect.Fill.ToString() == Colors.Green.ToString())
{
rect.Fill = new SolidColorBrush(Colors.Red);
- await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr) VALUES ({parkplatz})");
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr) VALUES ({parkplatz})");
+ var command = new MySqlCommand($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr) VALUES (@pParkplatz)");
+ command.Parameters.Add(new MySqlParameter("pParkplatz", parkplatz));
+ await SQL.WriteSQL(command);
}
}
}
@@ -2447,7 +3134,7 @@ namespace ZKuP
{
var parkplatz = (sender as TextBlock).Text;
- foreach (var rect in BesuchP.Children.OfType())
+ foreach (var rect in BesuchP.Children.OfType().First().Children.OfType())
{
if (rect.Name == "G" + parkplatz)
{
@@ -2459,7 +3146,12 @@ namespace ZKuP
else if (rect.Fill.ToString() == Colors.Green.ToString())
{
rect.Fill = new SolidColorBrush(Colors.Red);
- await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr) VALUES ('G{parkplatz}')");
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr) VALUES ('G{parkplatz}')");
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr, AusgegebenDurch) VALUES (@parkplatz, @ausgegeben)", new List()
+ {
+ new MySqlParameter("@parkplatz", $"G{parkplatz}"),
+ new MySqlParameter("@ausgegeben", Helper.InsertSpaceBeforeUpperCase(Environment.UserName))
+ });
}
}
}
@@ -2543,7 +3235,8 @@ namespace ZKuP
}
ChangeAccent(Color);
- Properties.Settings.Default.Accent = Color;
+ Settings.WriteSetting("Accent", Color);
+ //Properties.Settings.Default.Accent = Color;
}
bool dark = false;
@@ -2579,7 +3272,8 @@ namespace ZKuP
+ $"Resources/Bike_dark.png", UriKind.Absolute));
dark = true;
- Properties.Settings.Default.DarkMode = true;
+ Settings.WriteSetting("DarkMode", true);
+ //Properties.Settings.Default.DarkMode = true;
}
else
{
@@ -2612,7 +3306,8 @@ namespace ZKuP
dark = false;
- Properties.Settings.Default.DarkMode = false;
+ Settings.WriteSetting("DarkMode", false);
+ //Properties.Settings.Default.DarkMode = false;
}
getFahrzeuge();
@@ -2653,7 +3348,8 @@ namespace ZKuP
dark = true;
- Properties.Settings.Default.DarkMode = true;
+ Settings.WriteSetting("DarkMode", true);
+ //Properties.Settings.Default.DarkMode = true;
}
else
{
@@ -2685,7 +3381,8 @@ namespace ZKuP
+ $"Resources/Bike.png", UriKind.Absolute));
dark = false;
- Properties.Settings.Default.DarkMode = false;
+ Settings.WriteSetting("DarkMode", false);
+ //Properties.Settings.Default.DarkMode = false;
}
getFahrzeuge();
@@ -2695,7 +3392,7 @@ namespace ZKuP
private void ChangeAccent(string Color)
{
Color = Color == null || Color == "" ? "Blue" : Color;
- string DarkLight = Properties.Settings.Default.DarkMode ? "Dark" : "Light";
+ string DarkLight = Settings.GetSettingBool("DarkMode") ? "Dark" : "Light";
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(Application.Current, $"{DarkLight}.{Color}");
}
@@ -2706,7 +3403,62 @@ namespace ZKuP
lblmcfit.Visibility = Visibility.Visible;
else
lblmcfit.Visibility = Visibility.Collapsed;
+
+ if (tabPfoertner.IsSelected)
+ {
+ if (Helper.GetCOMPortCount() > 1)
+ btnCOMSelector.Visibility = Visibility.Visible;
+ else if (Helper.GetCOMPortCount() == 1)
+ Settings.WriteSetting("COMPort", Regex.Match(Helper.GetCOMPorts().First(), @"COM\d+(?=\))").Value);
+
+ if (Helper.GetCOMPortCount() == 0)
+ return;
+
+ Helper.InitSerial();
+ }
}
+
+ private void imgLoading_AnimationCompleted(DependencyObject d, XamlAnimatedGif.AnimationCompletedEventArgs e)
+ {
+ var gif = XamlAnimatedGif.AnimationBehavior.GetAnimator(imgLoading);
+ gif.Dispose();
+
+ gridSpinner.Visibility = Visibility.Collapsed;
+ }
+
+ private void MetroWindow_DragLeave(object sender, DragEventArgs e)
+ {
+ Helper.CheckScale(this);
+ }
+
+ private void MetroWindow_StateChanged(object sender, EventArgs e)
+ {
+ Helper.CheckScale(this);
+ }
+
+ private void MetroWindow_DpiChanged(object sender, DpiChangedEventArgs e)
+ {
+ Helper.CheckScale(this);
+ }
+
+ private void btnCOMSelector_Click(object sender, RoutedEventArgs e)
+ {
+ COMSelector cOMSelector = new COMSelector();
+ cOMSelector.ShowDialog();
+ }
+
+ private void btnCheckAusgegebeneParkausweise_Click(object sender, RoutedEventArgs e)
+ {
+ AusgegebeneParkausweise aPw = new AusgegebeneParkausweise();
+ aPw.ShowDialog();
+ }
+
+ private void btnEnstoerdienste_Click(object sender, RoutedEventArgs e)
+ {
+ ManageEntstoerdienste mEd = new ManageEntstoerdienste();
+ mEd.ShowDialog();
+ }
+
}
@@ -2752,6 +3504,7 @@ namespace ZKuP
FFK_Sasse,
M2,
Organisator,
+ M2_AM,
None
}
}
diff --git a/ZKuP/ManageAsp.xaml b/ZKuP/ManageAsp.xaml
index 2c791d1..ab3a6f3 100644
--- a/ZKuP/ManageAsp.xaml
+++ b/ZKuP/ManageAsp.xaml
@@ -1,14 +1,15 @@
-
+ Title="Ansprechpartner verwalten" Height="450" Width="1080"
+ WindowStartupLocation="CenterOwner" MinHeight="450" MinWidth="1080">
-
+
@@ -16,6 +17,13 @@
+
+
+
+
+
+
+
@@ -33,4 +41,4 @@
-
+
diff --git a/ZKuP/ManageAsp.xaml.cs b/ZKuP/ManageAsp.xaml.cs
index 535cae4..e5c572d 100644
--- a/ZKuP/ManageAsp.xaml.cs
+++ b/ZKuP/ManageAsp.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using MahApps.Metro.Controls;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@@ -20,7 +21,7 @@ namespace ZKuP
///
/// Interaktionslogik für ManageAsp.xaml
///
- public partial class ManageAsp : Window
+ public partial class ManageAsp : MetroWindow
{
public event PropertyChangedEventHandler PropertyChanged;
@@ -32,6 +33,7 @@ namespace ZKuP
}
DataTable asp = new DataTable("Asp");
+ string UserID = "0";
public ManageAsp()
{
@@ -39,30 +41,44 @@ namespace ZKuP
InitializeComponent();
+ UserID = SQL.ReadSingleValue($"SELECT idusers FROM {MainWindow.table}.users WHERE Username = '{Environment.UserName}'");
+
+ Query();
+ }
+
+ private void Query()
+ {
+ if (MainWindow.LoggedInRole == Roles.Admin)
+ {
+ asp = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.ansprechpartner ORDER BY Name ASC", asp).Result;
+ }
+ else
+ {
+ asp = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.ansprechpartner WHERE Name LIKE '%{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}%' OR Vertreter LIKE '%{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}%' OR Vorgesetzter LIKE '%{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}%' OR CreatorID = '{UserID}' ORDER BY Name ASC", asp).Result;
+ }
- asp = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.ansprechpartner", asp).Result;
aspView = Asp.DataTableToAsp(asp);
dgAsp.DataContext = asp;
}
private async void BtnCreateAsp_Click(object sender, RoutedEventArgs e)
{
- if (string.IsNullOrWhiteSpace(tbAsp.Text))
- MessageBox.Show(this, "Ansprechpartner muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (string.IsNullOrWhiteSpace(tbAspVertreter.Text))
- MessageBox.Show(this, "Vertreter muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (string.IsNullOrWhiteSpace(tbAspVorgesetzter.Text))
- MessageBox.Show(this, "Vorgesetzter muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (string.IsNullOrWhiteSpace(tbAspTel.Text))
- MessageBox.Show(this, "Ansprechpartner-Telefonnummer muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (string.IsNullOrWhiteSpace(tbVertreterTel.Text))
- MessageBox.Show(this, "Vertreter-Telefonnummer muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
- else if (string.IsNullOrWhiteSpace(tbVorgesetzterTel.Text))
- MessageBox.Show(this, "Vorgesetzter-Telefonnummer muss ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ if (string.IsNullOrWhiteSpace(tbAsp.Text) || tbAsp.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Ansprechpartner muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (string.IsNullOrWhiteSpace(tbAspVertreter.Text) || tbAspVertreter.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Vertreter muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (string.IsNullOrWhiteSpace(tbAspVorgesetzter.Text) || tbAspVorgesetzter.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Vorgesetzter muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (string.IsNullOrWhiteSpace(tbAspTel.Text) || !System.Text.RegularExpressions.Regex.IsMatch(tbAspTel.Text, "^[0-9()+\\-/ ]*$") || tbAspTel.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Ansprechpartner-Telefonnummer muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (string.IsNullOrWhiteSpace(tbVertreterTel.Text) || !System.Text.RegularExpressions.Regex.IsMatch(tbAspTel.Text, "^[0-9()+\\-/ ]*$") || tbVertreterTel.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Vertreter-Telefonnummer muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ else if (string.IsNullOrWhiteSpace(tbVorgesetzterTel.Text) || !System.Text.RegularExpressions.Regex.IsMatch(tbVertreterTel.Text, "^[0-9()+\\-/ ]*$") || tbVertreterTel.Text.ToList().Distinct().Count() < 5)
+ MessageBox.Show(this, "Vorgesetzter-Telefonnummer muss qualifiziert ausgefüllt sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else
{
- await SQL.WriteSQL("INSERT INTO ansprechpartner (Name,Vertreter,Tel_Nr,Vorgesetzter,Tel_Vertreter,Tel_Vorgesetzter) VALUES " +
- $"('{tbAsp.Text}','{tbAspVertreter.Text}','{tbAspTel.Text}','{tbAspVorgesetzter.Text}','{tbVertreterTel.Text}','{tbVorgesetzterTel.Text}')");
+ await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.ansprechpartner (Name,Vertreter,Tel_Nr,Vorgesetzter,Tel_Vertreter,Tel_Vorgesetzter,CreatorID) VALUES " +
+ $"('{tbAsp.Text}','{tbAspVertreter.Text}','{tbAspTel.Text}','{tbAspVorgesetzter.Text}','{tbVertreterTel.Text}','{tbVorgesetzterTel.Text}','{UserID}')");
tbAsp.Text = "";
tbAspTel.Text = "";
@@ -71,22 +87,24 @@ namespace ZKuP
tbVertreterTel.Text = "";
tbVorgesetzterTel.Text = "";
- asp = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.ansprechpartner", asp).Result;
- aspView = Asp.DataTableToAsp(asp);
+ Query();
}
}
private async void DgAsp_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)
{
- await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.ansprechpartner WHERE `Name` = '{arr[0]}'");
+ var dg = sender as DataGrid;
+ var row = dg.SelectedItem as DataRowView;
+ var arr = row.Row.ItemArray;
- asp = SQL.ReadSQL($"Select * from {MainWindow.table}.ansprechpartner", asp).Result;
- aspView = Asp.DataTableToAsp(asp);
+
+ if (arr[0].ToString() == Helper.InsertSpaceBeforeUpperCase(Environment.UserName) || arr[6].ToString() == UserID)
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.ansprechpartner WHERE `Name` = '{arr[0]}'");
+
+ Query();
+ }
}
}
@@ -105,22 +123,22 @@ namespace ZKuP
switch (header)
{
case "Ansprechpartner":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Name = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Name = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
case "Asp-Vertreter":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Vertreter = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Vertreter = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
case "Asp-Tel":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Tel_Nr = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Tel_Nr = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
case "Asp-Vorgesetzter":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Vorgesetzter = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Vorgesetzter = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
case "Vertreter-Tel":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Tel_Vertreter = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Tel_Vertreter = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
case "Vorgesetzter-Tel":
- await SQL.WriteSQL($"UPDATE ansprechpartner SET Tel_Vorgesetzter = '{newValue}' WHERE Name = '{name}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.ansprechpartner SET Tel_Vorgesetzter = '{newValue}', CreatorID = '{UserID}' WHERE Name = '{name}'");
break;
}
@@ -128,10 +146,52 @@ namespace ZKuP
dgAsp.RowValidationErrorTemplate = new ControlTemplate();
dgAsp.PreviewKeyDown += DgAsp_PreviewKeyDown;
- asp = SQL.ReadSQL($"Select * from {MainWindow.table}.ansprechpartner", asp).Result;
- aspView = Asp.DataTableToAsp(asp);
+ Query();
}
+ private void DelButton_Loaded(object sender, RoutedEventArgs e)
+ {
+ var btn = sender as Button;
+ var arr = (btn.DataContext as DataRowView).Row.ItemArray;
+ var user = arr[0].ToString();
+
+ if (MainWindow.LoggedInRole != Roles.Admin)
+ {
+ if (arr[0].ToString() == Helper.InsertSpaceBeforeUpperCase(Environment.UserName) || arr[6].ToString() == UserID)
+ {
+ btn.IsEnabled = true;
+ btn.Foreground = new SolidColorBrush(Colors.Red);
+ btn.ToolTip = $"Eintrag löschen";
+ }
+ else
+ {
+ btn.IsEnabled = false;
+ btn.Foreground = new SolidColorBrush(Colors.Gray);
+ btn.ToolTip = $"Gesperrt durch {user}";
+ }
+ }
+ }
+ private async void DeleteButton_Click(object sender, RoutedEventArgs e)
+ {
+ var arr = ((sender as Button).DataContext as DataRowView).Row.ItemArray;
+
+ if (MessageBoxResult.Yes == MessageBox.Show($"Wollen Sie den Eintrag für {arr[0]} sicher löschen?", "Eintrag löschen?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question))
+ {
+ Cursor = Cursors.Wait;
+
+ try
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.ansprechpartner WHERE Name = '{arr[0]}' OR CreatorID = '{UserID}'");
+ }
+ catch (Exception ex)
+ {
+ Log.WriteLog(ex.ToString());
+ MessageBox.Show("Es ist ein Fehler beim löschen aufgetreten, bitte erneut versuchen", "Fehler beim Löschen", MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+
+ Query();
+ }
+ }
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
@@ -143,6 +203,18 @@ namespace ZKuP
{
this.Close();
}
+
+
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
}
public class Asp
diff --git a/ZKuP/ManageDeliveries.xaml b/ZKuP/ManageDeliveries.xaml
index bc7c707..fd900ff 100644
--- a/ZKuP/ManageDeliveries.xaml
+++ b/ZKuP/ManageDeliveries.xaml
@@ -1,11 +1,12 @@
-
+ Title="Lieferanten verwalten" Height="352" Width="800" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
@@ -21,4 +22,4 @@
-
+
diff --git a/ZKuP/ManageDeliveries.xaml.cs b/ZKuP/ManageDeliveries.xaml.cs
index b6503f5..56ff848 100644
--- a/ZKuP/ManageDeliveries.xaml.cs
+++ b/ZKuP/ManageDeliveries.xaml.cs
@@ -1,4 +1,8 @@
-using System;
+using ControlzEx.Standard;
+using FuzzySharp;
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@@ -7,6 +11,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
@@ -19,7 +24,7 @@ namespace ZKuP
///
/// Interaktionslogik für ManageDeliveries.xaml
///
- public partial class ManageDeliveries : Window, INotifyPropertyChanged
+ public partial class ManageDeliveries : MetroWindow, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
@@ -46,14 +51,23 @@ namespace ZKuP
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
- if (tbFirma.Text == "")
+ if (string.IsNullOrWhiteSpace(tbFirma.Text))
{
MessageBox.Show(this, "Lieferfirma muss eingetragen werden!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
- await SQL.WriteSQL($"INSERT INTO lieferanten (Firma, Fahrer, Handynr, Kennzeichen) VALUES ('{tbFirma.Text}','{tbFahrer.Text}','{tbHandynr.Text}','{tbKennzeichen.Text}')");
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.lieferanten (Firma, Fahrer, Handynr, Kennzeichen) VALUES ('{tbFirma.Text}','{tbFahrer.Text}','{tbHandynr.Text}','{tbKennzeichen.Text}')");
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.lieferanten (Firma, Fahrer, Handynr, Kennzeichen, EingetragenVon) VALUES (@tbFirma,@tbFahrer,@tbHandynr,@tbKennzeichen,@eingetragenVon)", new List()
+ {
+ new MySqlParameter("@tbFirma", tbFirma.Text),
+ new MySqlParameter("@tbFahrer", tbFahrer.Text),
+ new MySqlParameter("@tbHandynr", tbHandynr.Text),
+ new MySqlParameter("@tbKennzeichen", tbKennzeichen.Text),
+ new MySqlParameter("@eingetragenVon", Environment.UserName)
+ });
+
lieferanten = SQL.ReadSQL($"Select * from {MainWindow.table}.lieferanten", lieferanten).Result;
DeliveriesView = Deliver.DataTableToDeliver(lieferanten);
@@ -62,17 +76,17 @@ namespace ZKuP
ResetInput();
}
}
-
- private void ResetInput()
- {
- tbFirma.Text = "";
- tbFahrer.Text = "";
- tbHandynr.Text = "";
- tbKennzeichen.Text = "";
- }
- private void BtnClose_Click(object sender, RoutedEventArgs e)
+ private void ResetInput()
+ {
+ tbFirma.Text = "";
+ tbFahrer.Text = "";
+ tbHandynr.Text = "";
+ tbKennzeichen.Text = "";
+ }
+
+ private void BtnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
@@ -80,6 +94,8 @@ namespace ZKuP
private async void dgLieferanten_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
+ if (string.IsNullOrWhiteSpace((e.EditingElement as TextBox).Text)) return;
+
var header = e.Column.Header;
var newValue = (e.EditingElement as TextBox).Text;
var id = (e.Row.Item as System.Data.DataRowView).Row.ItemArray[4];
@@ -92,16 +108,16 @@ namespace ZKuP
switch (header)
{
case "Firma":
- await SQL.WriteSQL($"UPDATE lieferanten SET Firma = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.lieferanten SET Firma = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Fahrer":
- await SQL.WriteSQL($"UPDATE lieferanten SET Fahrer = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.lieferanten SET Fahrer = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Handynr":
- await SQL.WriteSQL($"UPDATE lieferanten SET Handynr = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.lieferanten SET Handynr = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Kennzeichen":
- await SQL.WriteSQL($"UPDATE lieferanten SET Kennzeichen = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.lieferanten SET Kennzeichen = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
}
@@ -154,13 +170,38 @@ namespace ZKuP
else btnDeleteDeliver.IsEnabled = false;
}
+
+ ToolTip tt = new ToolTip();
private void TextBoxes_PreviewKeyDown(object sender, KeyEventArgs e)
{
+ var input = (sender as TextBox).Text;
+ if (input.ToLower().Contains("db") ||
+ input.ToLower() == "service")
+ {
+ tt.Placement = PlacementMode.RelativePoint;
+ tt.PlacementTarget = (sender as TextBox);
+ tt.VerticalOffset = (sender as TextBox).Height;
+ //tt.Width = (sender as TextBox).Width;
+ tt.Background = new SolidColorBrush(Colors.Red);
+ tt.Content = new Grid();
+ (tt.Content as Grid).Background = new SolidColorBrush(Colors.Red);
+ (tt.Content as Grid).Children.Add(new TextBlock() { Text = "DB Firmen dürfen nicht als Lieferant angelegt werden!!" });
+
+ tt.IsOpen = true;
+ (sender as TextBox).ToolTip = tt;
+ }
+ else
+ {
+ tt.IsOpen = false;
+ (sender as TextBox).ToolTip = null;
+ }
+
if (e.Key != Key.OemComma)
{
e.Handled = false;
return;
}
+ else
{
MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
e.Handled = true;
@@ -170,6 +211,16 @@ namespace ZKuP
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName);
@@ -201,7 +252,7 @@ namespace ZKuP
Firma = dr[0].ToString(),
Fahrer = dr[1].ToString(),
Handynr = dr[2].ToString(),
- Kennzeichen = dr[3].ToString()
+ Kennzeichen = dr[3].ToString()
});
}
diff --git a/ZKuP/ManageEntstoerdienste.xaml b/ZKuP/ManageEntstoerdienste.xaml
new file mode 100644
index 0000000..6107476
--- /dev/null
+++ b/ZKuP/ManageEntstoerdienste.xaml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ZKuP/ManageEntstoerdienste.xaml.cs b/ZKuP/ManageEntstoerdienste.xaml.cs
new file mode 100644
index 0000000..02dbf4b
--- /dev/null
+++ b/ZKuP/ManageEntstoerdienste.xaml.cs
@@ -0,0 +1,252 @@
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+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 ZKuP
+{
+ ///
+ /// Interaktionslogik für ManageEntstoerdienste.xaml
+ ///
+ public partial class ManageEntstoerdienste : MetroWindow, INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ private List myVar;
+ public List DeliveriesView
+ {
+ get { return myVar; }
+ set { myVar = value; OnPropertyChanged(); }
+ }
+ System.Data.DataTable entstoerdienste = new System.Data.DataTable("entstoerdienste");
+
+
+ public ManageEntstoerdienste()
+ {
+ InitializeComponent();
+
+
+ var list = new List()
+ {
+ "DB Energie",
+ "DB InfraGO",
+ "DB KT",
+ "DB Postservice",
+ "Gerätewagen"
+ };
+
+ cbFirma.ItemsSource = list;
+
+ entstoerdienste = SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste).Result;
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ dgEntstoerdienste.DataContext = entstoerdienste;
+
+ dgEntstoerdienste.Items.SortDescriptions.Clear();
+ dgEntstoerdienste.Items.SortDescriptions.Add(new SortDescription("Firma", ListSortDirection.Ascending));
+ dgEntstoerdienste.Items.Refresh();
+ }
+
+ private async void dgEntstoerdienste_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
+ {
+ if (string.IsNullOrWhiteSpace((e.EditingElement as TextBox).Text)) return;
+
+ var header = e.Column.Header;
+ var newValue = (e.EditingElement as TextBox).Text;
+ var id = (e.Row.Item as System.Data.DataRowView).Row.ItemArray[0];
+
+ string searchFahrer = "";
+
+ if ((e.Row.Item as System.Data.DataRowView).Row.ItemArray[1].ToString() != "")
+ searchFahrer = $" AND Fahrer = '{(e.Row.Item as System.Data.DataRowView).Row.ItemArray[1].ToString()}'";
+
+ switch (header)
+ {
+ case "Firma":
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.entstoerdienste SET Firma = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `identstoerdienste` = '{id}'");// + searchFahrer);
+ break;
+ case "Fahrer":
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.entstoerdienste SET Fahrer = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `identstoerdienste` = '{id}'");// + searchFahrer);
+ break;
+ case "Handynr":
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.entstoerdienste SET Handynr = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `identstoerdienste` = '{id}'");// + searchFahrer);
+ break;
+ case "Kennzeichen":
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.entstoerdienste SET Kennzeichen = '{newValue}', GeändertVon = '{Environment.UserName}' WHERE `identstoerdienste` = '{id}'");// + searchFahrer);
+ break;
+ }
+
+ dgEntstoerdienste.PreviewKeyDown += DgEntstoerdienste_PreviewKeyDown;
+
+ entstoerdienste = await SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste);
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ }
+
+ private async void DgEntstoerdienste_PreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ var dg = sender as DataGrid;
+ var row = dg.SelectedItem as System.Data.DataRowView;
+ var arr = row.Row.ItemArray;
+
+ if (e.Key == Key.Delete)
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.entstoerdienste WHERE `identstoerdienste` = '{arr[0]}'");
+
+ entstoerdienste = SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste).Result;
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ }
+ }
+
+ private void dgEntstoerdienste_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (dgEntstoerdienste.SelectedIndex != -1) btnDeleteDeliver.IsEnabled = true;
+ else btnDeleteDeliver.IsEnabled = false;
+ }
+
+ private void dgEntstoerdienste_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
+ {
+ dgEntstoerdienste.PreviewKeyDown -= DgEntstoerdienste_PreviewKeyDown;
+ }
+
+ private async void dgEntstoerdienste_PreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ var dg = sender as DataGrid;
+ var row = dg.SelectedItem as System.Data.DataRowView;
+ var arr = row.Row.ItemArray;
+
+ if (e.Key == Key.Delete)
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.entstoerdienste WHERE `identstoerdienste` = '{arr[0]}'");
+
+ entstoerdienste = SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste).Result;
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ }
+ }
+
+ private async void btnDeleteDeliver_Click(object sender, RoutedEventArgs e)
+ {
+ var dg = dgEntstoerdienste;
+ var row = dg.SelectedItem as System.Data.DataRowView;
+ var arr = row.Row.ItemArray;
+
+ if (MessageBox.Show(this, $"Markierten Entstördienst wirklich entfernen?", "Entstördienst entfernen?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.entstoerdienste WHERE `identstoerdienste` = '{arr[0]}'");
+
+ entstoerdienste = SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste).Result;
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ }
+ }
+
+ private void TextBoxes_PreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key != Key.OemComma)
+ {
+ e.Handled = false;
+ return;
+ }
+ else
+ {
+ MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
+ e.Handled = true;
+ }
+ }
+
+ private async void btnAdd_Click(object sender, RoutedEventArgs e)
+ {
+ if (string.IsNullOrWhiteSpace(cbFirma.Text))
+ {
+ MessageBox.Show(this, "DB Firma muss eingetragen werden!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+ else
+ {
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.lieferanten (Firma, Fahrer, Handynr, Kennzeichen) VALUES ('{tbFirma.Text}','{tbFahrer.Text}','{tbHandynr.Text}','{tbKennzeichen.Text}')");
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.entstoerdienste (Firma, Fahrer, Handynr, Kennzeichen, EingetragenVon) VALUES (@tbFirma,@tbFahrer,@tbHandynr,@tbKennzeichen,@eingetragenVon)", new List()
+ {
+ new MySqlParameter("@tbFirma", cbFirma.Text),
+ new MySqlParameter("@tbFahrer", tbFahrer.Text),
+ new MySqlParameter("@tbHandynr", tbHandynr.Text),
+ new MySqlParameter("@tbKennzeichen", tbKennzeichen.Text),
+ new MySqlParameter("@eingetragenVon", Environment.UserName)
+ });
+
+
+ entstoerdienste = SQL.ReadSQL($"Select * from {MainWindow.table}.entstoerdienste", entstoerdienste).Result;
+ DeliveriesView = Deliver.DataTableToDeliver(entstoerdienste);
+ dgEntstoerdienste.ScrollIntoView(dgEntstoerdienste.Items[dgEntstoerdienste.Items.Count - 1]); //scroll to last
+ dgEntstoerdienste.UpdateLayout();
+ ResetInput();
+ }
+ }
+
+
+ private void ResetInput()
+ {
+ cbFirma.Text = "";
+ tbFahrer.Text = "";
+ tbHandynr.Text = "";
+ tbKennzeichen.Text = "";
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void OnPropertyChanged([CallerMemberName] string propertyName = null)
+ {
+ System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName);
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+}
+
+
+
+
+public class Deliver
+{
+ public string Firma;
+ string Fahrer;
+ string Handynr;
+ string Kennzeichen;
+
+
+
+
+ public static List DataTableToDeliver(System.Data.DataTable dataTable)
+ {
+ List x = new List();
+
+ foreach (System.Data.DataRow dr in dataTable.Rows)
+ {
+ x.Add(new Deliver()
+ {
+ Firma = dr[0].ToString(),
+ Fahrer = dr[1].ToString(),
+ Handynr = dr[2].ToString(),
+ Kennzeichen = dr[3].ToString()
+ });
+ }
+
+ return x;
+ }
+}
diff --git a/ZKuP/ManageParkausweis.xaml b/ZKuP/ManageParkausweis.xaml
index a3730d0..ccd7b51 100644
--- a/ZKuP/ManageParkausweis.xaml
+++ b/ZKuP/ManageParkausweis.xaml
@@ -1,11 +1,12 @@
-
+ Title="Parkausweise verwalten" Height="450" Width="1300" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
@@ -19,6 +20,7 @@
@@ -26,6 +28,7 @@
@@ -54,9 +57,10 @@
-
+
+
-
+
diff --git a/ZKuP/ManageParkausweis.xaml.cs b/ZKuP/ManageParkausweis.xaml.cs
index ca014e0..73c8e77 100644
--- a/ZKuP/ManageParkausweis.xaml.cs
+++ b/ZKuP/ManageParkausweis.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using MahApps.Metro.Controls;
+using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -12,22 +13,29 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
+using System.Windows.Threading;
namespace ZKuP
{
///
/// Interaktionslogik für ManageParkausweis.xaml
///
- public partial class ManageParkausweis : Window
+ public partial class ManageParkausweis : MetroWindow
{
+ private DispatcherTimer _searchTimer;
+
+
public ManageParkausweis()
{
InitializeComponent();
var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise").Result;
dgManage.DataContext = list;
- }
+ _searchTimer = new DispatcherTimer();
+ _searchTimer.Interval = TimeSpan.FromMilliseconds(300);
+ _searchTimer.Tick += SearchTimer_Tick;
+ }
private async void DgManage_PreviewKeyDown(object sender, KeyEventArgs e)
{
@@ -37,10 +45,13 @@ namespace ZKuP
if (e.Key == Key.Delete)
{
- await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkausweise WHERE `idparkausweise` = '{arr[0]}'");
+ if (MessageBoxResult.Yes == MessageBox.Show($"Möchten Sie den Parkausweis mit der ID {arr[0]} sicher löschen?", "Sicher löschen?", MessageBoxButton.YesNo, MessageBoxImage.Question))
+ {
+ await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkausweise WHERE `idparkausweise` = '{arr[0]}'");
- var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise").Result;
- dgManage.DataContext = list;
+ var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise").Result;
+ dgManage.DataContext = list;
+ }
}
}
@@ -61,5 +72,34 @@ namespace ZKuP
//await Task.Run(() => QueryProjekte());
}
+
+
+ private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ RestartSearchTimer();
+ }
+ private void RestartSearchTimer()
+ {
+ _searchTimer.Stop();
+ _searchTimer.Start();
+ }
+
+ private void SearchTimer_Tick(object sender, EventArgs e)
+ {
+ _searchTimer.Stop();
+
+ var tb = searchBox.Text;
+ (dgManage.ItemsSource as DataView).RowFilter = $"MA_Vorname LIKE '%{(tb)}%' OR MA_Name LIKE '%{(tb)}%' OR Abteilung LIKE '%{(tb)}%' OR Kennzeichen LIKE '%{(tb)}%'";
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
}
}
diff --git a/ZKuP/ManageUsers.xaml b/ZKuP/ManageUsers.xaml
index 3fe86b1..5cd50cb 100644
--- a/ZKuP/ManageUsers.xaml
+++ b/ZKuP/ManageUsers.xaml
@@ -1,33 +1,35 @@
-
-
+ Title="Manage Users" Height="657" Width="450" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
+
-
+
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
-
+
diff --git a/ZKuP/ManageUsers.xaml.cs b/ZKuP/ManageUsers.xaml.cs
index 3f68363..b7f07ec 100644
--- a/ZKuP/ManageUsers.xaml.cs
+++ b/ZKuP/ManageUsers.xaml.cs
@@ -1,4 +1,6 @@
-using System;
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@@ -20,10 +22,20 @@ namespace ZKuP
///
/// Interaktionslogik für ManageUsers.xaml
///
- public partial class ManageUsers : Window, INotifyPropertyChanged
+ public partial class ManageUsers : MetroWindow, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
+ public static List RoleList { get; set; } = new List()
+ {
+ "Pförtner",
+ "FFK",
+ "Admin",
+ "FFK Sasse",
+ "M2",
+ "Organisator",
+ "M2 AM"
+ };
private List myVar;
public List UserView
@@ -36,8 +48,10 @@ namespace ZKuP
public ManageUsers()
{
- InitializeComponent();
+ this.DataContext = this;
+ InitializeComponent();
+
userList = SQL.ReadSQL($"Select * from {MainWindow.table}.users", userList).Result;
userList.DefaultView.Sort = "Username";
userList = userList.DefaultView.ToTable();
@@ -47,28 +61,39 @@ namespace ZKuP
private async void BtnAddUser_Click(object sender, RoutedEventArgs e)
{
- if(tbUsername.Text == "")
+ if (!await SQL.RowExists("users", "Username", tbUsername.Text))
{
- MessageBox.Show("Username eintragen!", "Fehler");
- return;
+ if (tbUsername.Text == "")
+ {
+ MessageBox.Show("Username eintragen!", "Fehler");
+ return;
+ }
+
+ if (cbRole.SelectedIndex == -1)
+ {
+ MessageBox.Show("Role auswählen!", "Fehler");
+ return;
+ }
+
+
+ //await SQL.WriteSQL($"Insert into {MainWindow.table}.users (Username,Role) VALUES ('{tbUsername.Text}','{cbRole.SelectedIndex}')");
+ await SQL.CreateAndWriteSQL($"Insert into {MainWindow.table}.users (Username,Role) VALUES (@tbUsername,@cbRole_SelectedIndex)", new List()
+ {
+ new MySqlParameter("@tbUsername", tbUsername.Text),
+ new MySqlParameter("@cbRole_SelectedIndex", cbRole.SelectedIndex)
+ });
+
+
+ userList = SQL.ReadSQL($"Select * from {MainWindow.table}.users", userList).Result;
+ userList.DefaultView.Sort = "Username";
+ userList = userList.DefaultView.ToTable();
+ UserView = Users.DataTableToUserList(userList);
+ dgUsers.DataContext = userList;
+
+ dgUsers.ScrollIntoView(UserView.Last());
}
-
- if(cbRole.SelectedIndex == -1)
- {
- MessageBox.Show("Role auswählen!", "Fehler");
- return;
- }
-
-
- await SQL.WriteSQL($"Insert into {MainWindow.table}.users (Username,Role) VALUES ('{tbUsername.Text}','{cbRole.SelectedIndex}')");
-
- userList = SQL.ReadSQL($"Select * from {MainWindow.table}.users", userList).Result;
- userList.DefaultView.Sort = "Username";
- userList = userList.DefaultView.ToTable();
- UserView = Users.DataTableToUserList(userList);
- dgUsers.DataContext = userList;
-
- dgUsers.ScrollIntoView(UserView.Last());
+ else
+ MessageBox.Show("Der angegebene User existiert bereits!", "User bereits vorhanden", MessageBoxButton.OK, MessageBoxImage.Error);
}
private async void btnDelUser_Click(object sender, RoutedEventArgs e)
@@ -120,6 +145,46 @@ namespace ZKuP
System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName);
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
+
+ private async void cbDGRole_DropDownClosed(object sender, EventArgs e)
+ {
+ var combo = sender as ComboBox;
+ //var dg = (combo.DataContext as DataRowView).;
+ var row = combo.DataContext as DataRowView;
+ var arr = row.Row.ItemArray;
+
+ if (MessageBoxResult.Yes == MessageBox.Show($"Die Rolle des Users {arr[1]} sicher zu {(sender as ComboBox).SelectedValue.ToString()} ändern?", "Sicher ändern?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes))
+ {
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.users SET Role = '{combo.SelectedIndex}' WHERE Username = '{arr[1]}'");
+
+ userList = SQL.ReadSQL($"Select * from {MainWindow.table}.users", userList).Result;
+ userList.DefaultView.Sort = "Username";
+ userList = userList.DefaultView.ToTable();
+ UserView = Users.DataTableToUserList(userList);
+ dgUsers.DataContext = userList;
+ }
+ }
+
+
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private async void dgUsers_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
+ {
+ await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.users SET Username = @user WHERE Username = @oldUser", new List
+ {
+ new MySqlParameter("@user", (e.EditingElement as TextBox).Text),
+ new MySqlParameter("@oldUser", ((System.Data.DataRowView)e.Row.Item).Row.ItemArray[1])
+ });
+ }
}
diff --git a/ZKuP/ManageVisitor.xaml b/ZKuP/ManageVisitor.xaml
index 70ea776..ba537ac 100644
--- a/ZKuP/ManageVisitor.xaml
+++ b/ZKuP/ManageVisitor.xaml
@@ -8,7 +8,7 @@
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
Title="Besucher verwalten" Height="611" Width="1390" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner" Loaded="Window_Loaded">
-
+
@@ -186,12 +186,12 @@
-
+
-
+
-
+
@@ -248,7 +248,7 @@
-
+
@@ -348,6 +348,18 @@
+
+
diff --git a/ZKuP/ManageVisitor.xaml.cs b/ZKuP/ManageVisitor.xaml.cs
index 30bb7dd..aa7ffa9 100644
--- a/ZKuP/ManageVisitor.xaml.cs
+++ b/ZKuP/ManageVisitor.xaml.cs
@@ -1,4 +1,6 @@
using FuzzySharp;
+using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -22,7 +24,7 @@ namespace ZKuP
///
/// Interaktionslogik für CreateVisitor.xaml
///
- public partial class ManageVisitor : MahApps.Metro.Controls.MetroWindow, INotifyPropertyChanged
+ public partial class ManageVisitor : MetroWindow, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
@@ -76,7 +78,7 @@ namespace ZKuP
private void updateList()
{
- if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner)
+ if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Pförtner)
{
requestListAdmin();
}
@@ -237,14 +239,31 @@ namespace ZKuP
AddVisitorsList aVl = new AddVisitorsList(Convert.ToInt16(tbAnzahl_Begleiter.Text));
aVl.Owner = this;
+ aVl.WindowStartupLocation = WindowStartupLocation.CenterOwner;
if (aVl.ShowDialog() == true)
{
var groupId = aVl.GroupID;
- await SQL.WriteSQL("INSERT INTO besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller,idBesucherGroups) VALUES " +
- $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Besucher.Text}','{tbAnzahl_Begleiter.Text}','{dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")}','{tbGrundDesBesuchs.Text}','{tbAnsprechp_Intern.Text}','{tbTel_Ansprechp.Text}','{tbOertlichkeit.Text}','{Environment.UserName}','{groupId}')");
- await SQL.WriteSQL($"UPDATE besucherGroups SET idbesucher = '{Convert.ToInt32(SQL.ReadSingleValue($"SELECT LAST_INSERT_ID()"))}'");
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller,idBesucherGroups) VALUES " +
+ // $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Besucher.Text}','{tbAnzahl_Begleiter.Text}','{dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")}','{tbGrundDesBesuchs.Text}','{tbAnsprechp_Intern.Text}','{tbTel_Ansprechp.Text}','{tbOertlichkeit.Text}','{Environment.UserName}','{groupId}')");
+ var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller,idBesucherGroups) VALUES (@tbName,@tbVerantwortlicher_MA,@tbTel_Besucher,@tbAnzahl_Begleiter,@Besuchstag,@tbGrundDesBesuchs,@tbAnsprechp_Intern,@tbTel_Ansprechp,@tbOertlichkeit,@UserName,@groupId)", new List()
+ {
+ new MySqlParameter("@tbName", tbName.Text),
+ new MySqlParameter("@tbVerantwortlicher_MA", tbVerantwortlicher_MA.Text),
+ new MySqlParameter("@tbTel_Besucher", tbTel_Besucher.Text),
+ new MySqlParameter("@tbAnzahl_Begleiter", tbAnzahl_Begleiter.Text),
+ new MySqlParameter("@Besuchstag", dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")),
+ new MySqlParameter("@tbGrundDesBesuchs", tbGrundDesBesuchs.Text),
+ new MySqlParameter("@tbAnsprechp_Intern", tbAnsprechp_Intern.Text),
+ new MySqlParameter("@tbTel_Ansprechp", tbTel_Ansprechp.Text),
+ new MySqlParameter("@tbOertlichkeit", tbOertlichkeit.Text),
+ new MySqlParameter("@UserName", Environment.UserName),
+ new MySqlParameter("@groupId", groupId)
+ });
+
+
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET idbesucher = '{lastID}' WHERE idbesucherGroups = '{groupId}'");
}
else
{
@@ -254,8 +273,21 @@ namespace ZKuP
}
else
{
- await SQL.WriteSQL("INSERT INTO besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller) VALUES " +
- $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Besucher.Text}','{tbAnzahl_Begleiter.Text}','{dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")}','{tbGrundDesBesuchs.Text}','{tbAnsprechp_Intern.Text}','{tbTel_Ansprechp.Text}','{tbOertlichkeit.Text}','{Environment.UserName}')");
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller) VALUES " +
+ // $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Besucher.Text}','{tbAnzahl_Begleiter.Text}','{dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")}','{tbGrundDesBesuchs.Text}','{tbAnsprechp_Intern.Text}','{tbTel_Ansprechp.Text}','{tbOertlichkeit.Text}','{Environment.UserName}')");
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller) VALUES (@tbName,@tbVerantwortlicher_MA,@tbTel_Besucher,@tbAnzahl_Begleiter,@Besuchstag,@tbGrundDesBesuchs,@tbAnsprechp_Intern,@tbTel_Ansprechp,@tbOertlichkeit,@UserName)", new List()
+ {
+ new MySqlParameter("@tbName", tbName.Text),
+ new MySqlParameter("@tbVerantwortlicher_MA", tbVerantwortlicher_MA.Text),
+ new MySqlParameter("@tbTel_Besucher", tbTel_Besucher.Text),
+ new MySqlParameter("@tbAnzahl_Begleiter", tbAnzahl_Begleiter.Text),
+ new MySqlParameter("@Besuchstag", dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")),
+ new MySqlParameter("@tbGrundDesBesuchs", tbGrundDesBesuchs.Text),
+ new MySqlParameter("@tbAnsprechp_Intern", tbAnsprechp_Intern.Text),
+ new MySqlParameter("@tbTel_Ansprechp", tbTel_Ansprechp.Text),
+ new MySqlParameter("@tbOertlichkeit", tbOertlichkeit.Text),
+ new MySqlParameter("@UserName", Environment.UserName)
+ });
}
}
@@ -309,8 +341,9 @@ namespace ZKuP
newValue = (e.EditingElement as ComboBox).Text;
else if (header.ToString() == "Besuchstag")
newValue = (e.EditingElement as DatePicker).Text;
- else
+ else if (e.EditingElement.GetType() == typeof(TextBox))
newValue = (e.EditingElement as TextBox).Text;
+ else return;
var id = (e.Row.Item as DataRowView).Row.ItemArray[0];
@@ -331,34 +364,34 @@ namespace ZKuP
switch (header)
{
case "Name":
- await SQL.WriteSQL($"UPDATE besucher SET Name = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Name = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Verantw. MA":
- await SQL.WriteSQL($"UPDATE besucher SET Verantwortlicher_MA = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Verantwortlicher_MA = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Tel. Besucher":
- await SQL.WriteSQL($"UPDATE besucher SET Tel_Nr_Besucher = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Tel_Nr_Besucher = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Anz. Begleitp.":
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9]*$"))
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else
- await SQL.WriteSQL($"UPDATE besucher SET Anzahl_Begleitpersonen = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Besuchstag":
- await SQL.WriteSQL($"UPDATE besucher SET Besuchstag = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Besuchstag = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Grund des Besuchs":
- await SQL.WriteSQL($"UPDATE besucher SET Grund_des_Besuchs = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Grund_des_Besuchs = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Örtlichkeit":
- await SQL.WriteSQL($"UPDATE besucher SET Oertlichkeit = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Oertlichkeit = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Anspr. intern":
- await SQL.WriteSQL($"UPDATE besucher SET Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
case "Tel. Ansprechp.":
- await SQL.WriteSQL($"UPDATE besucher SET Tel_Nr_Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Tel_Nr_Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
break;
}
}
@@ -453,9 +486,22 @@ namespace ZKuP
private async void deleteRow(object[] arr)
{
- await SQL.WriteSQL("INSERT INTO besucherLog (idbesucher, Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Geloescht_Von) VALUES " +
- $"('{arr[0]}','{arr[1].ToString()}','{arr[2].ToString()}','{arr[3].ToString()}','{arr[4].ToString()}','{Convert.ToDateTime(arr[5].ToString()).ToString("yyyy-MM-dd")}','{arr[6].ToString()}','{arr[7].ToString()}','{arr[8].ToString()}','{arr[10].ToString()}','{Environment.UserName}')");
-
+ //await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucherLog (idbesucher, Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Geloescht_Von) VALUES " +
+ // $"('{arr[0]}','{arr[1].ToString()}','{arr[2].ToString()}','{arr[3].ToString()}','{arr[4].ToString()}','{Convert.ToDateTime(arr[5].ToString()).ToString("yyyy-MM-dd")}','{arr[6].ToString()}','{arr[7].ToString()}','{arr[8].ToString()}','{arr[10].ToString()}','{Environment.UserName}')");
+ await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherLog (idbesucher, Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Geloescht_Von) VALUES (@arr0,@arr1,@arr2,@arr3,@arr4,@arr5,@arr6,@arr7,@arr8,@arr10,@UserName)", new List()
+ {
+ new MySqlParameter("@arr0", arr[0]),
+ new MySqlParameter("@arr1", arr[1].ToString()),
+ new MySqlParameter("@arr2", arr[2].ToString()),
+ new MySqlParameter("@arr3", arr[3].ToString()),
+ new MySqlParameter("@arr4", arr[4].ToString()),
+ new MySqlParameter("@arr5", Convert.ToDateTime(arr[5].ToString()).ToString("yyyy-MM-dd")),
+ new MySqlParameter("@arr6", arr[6].ToString()),
+ new MySqlParameter("@arr7", arr[7].ToString()),
+ new MySqlParameter("@arr8", arr[8].ToString()),
+ new MySqlParameter("@arr10", arr[10].ToString()),
+ new MySqlParameter("@UserName", Environment.UserName)
+ });
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.besucher WHERE `idBesucher` = '{arr[0]}'");
@@ -528,7 +574,7 @@ namespace ZKuP
private void Window_Loaded(object sender, RoutedEventArgs e)
{
-
+ Helper.CheckWindowIsInScreenSpace(this);
}
private async void dpDataGridBesuchstag_CalendarClosed(object sender, RoutedEventArgs e)
@@ -538,7 +584,7 @@ namespace ZKuP
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Besuchstag' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
- await SQL.WriteSQL($"UPDATE besucher SET Besuchstag = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Besuchstag = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
}
}
}
@@ -577,7 +623,7 @@ namespace ZKuP
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValueAsp}' in der Spalte 'Anspr. intern' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
- await SQL.WriteSQL($"UPDATE besucher SET Ansprechpartner_Intern = '{box.Text}',Tel_Nr_Ansprechpartner_Intern = '{SQL.ReadSingleValue($"SELECT Tel_Nr FROM {MainWindow.table}.ansprechpartner WHERE Name = '{(sender as ComboBox).Text}'")}', Bearbeiter = '{Environment.UserName}' WHERE idbesucher = '{id}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Ansprechpartner_Intern = '{box.Text}',Tel_Nr_Ansprechpartner_Intern = '{SQL.ReadSingleValue($"SELECT Tel_Nr FROM {MainWindow.table}.ansprechpartner WHERE Name = '{(sender as ComboBox).Text}'")}', Bearbeiter = '{Environment.UserName}' WHERE idbesucher = '{id}'");
updateList();
@@ -597,6 +643,33 @@ namespace ZKuP
}
+
+ private async void Tel_Nr_Besucher_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+ {
+ var box = sender as TextBox;
+ DataGridRow dataGridRow = Helper.FindParent(box);
+ int index = dataGridRow.GetIndex();
+
+ var id = ((System.Data.DataRowView)dataGridRow.DataContext).Row.ItemArray[0];
+
+ if (oldValueAsp != box.Text)
+ {
+ if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValueAsp}' in der Spalte 'Tel. Besucher' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
+ {
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Tel_Nr_Besucher = '{box.Text}' WHERE idbesucher = '{id}'");
+
+ updateList();
+
+
+ dgVisitors.RowValidationErrorTemplate = new ControlTemplate();
+
+ dgVisitors.SelectedIndex = (index);
+ dgVisitors.ScrollIntoView(dgVisitors.Items[index]);
+ }
+ }
+ }
+
+
string searchTerm = "";
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
@@ -747,7 +820,7 @@ namespace ZKuP
{
tt.Placement = PlacementMode.RelativePoint;
tt.PlacementTarget = tbName;
- tt.VerticalOffset = tbName.Height;
+ tt.HorizontalOffset = tbName.Width * .75;
tt.Width = tbName.Width;
tt.Background = new SolidColorBrush(Colors.Red);
tt.Content = new Grid();
@@ -778,30 +851,26 @@ namespace ZKuP
tt.IsOpen = false;
}
- string editID = "";
+ //int editID = 0;
private void btnEdit_Click(object sender, RoutedEventArgs e)
{
- editID = (((sender as Button).Parent as StackPanel).DataContext as DataRowView).Row.ItemArray[0].ToString();
- (sender as Button).ContextMenu.IsOpen = true;
+ int editID = Convert.ToInt32((((sender as Button).Parent as StackPanel).DataContext as DataRowView).Row.ItemArray[0]);
+ var anz = Convert.ToInt16((((sender as Button).Parent as StackPanel).DataContext as DataRowView).Row.ItemArray[4]);
+
+ AddVisitorsList aVl = new AddVisitorsList(anz, true, editID);
+ aVl.Owner = this;
+ aVl.WindowStartupLocation = WindowStartupLocation.CenterOwner;
+ aVl.ShowDialog();
+
+ updateList();
}
- private void MenuItem_Click(object sender, RoutedEventArgs e)
+
+ private void Window_LocationChanged(object sender, EventArgs e)
{
- var item = (sender as MenuItem).Tag;
-
- switch (item)
- {
- case "1": //Anzahl ändern
- var pop = new Popup();
- pop.Placement = PlacementMode.Mouse;
- pop.Child = new StackPanel() { Orientation = Orientation.Horizontal };
-
- break;
- case "2": //Personen anzeigen / bearbeiten
-
-
- break;
- }
+ this.LocationChanged -= Window_LocationChanged;
+ Helper.CheckWindowIsInScreenSpace(this);
+ this.LocationChanged += Window_LocationChanged;
}
}
diff --git a/ZKuP/MySqlConnectionChecker.cs b/ZKuP/MySqlConnectionChecker.cs
new file mode 100644
index 0000000..aba0e44
--- /dev/null
+++ b/ZKuP/MySqlConnectionChecker.cs
@@ -0,0 +1,102 @@
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZKuP
+{
+ internal class MySqlConnectionChecker
+ {
+ public class ConnectionResult
+ {
+ public bool IsConnected { get; set; }
+ public string Message { get; set; }
+ public TimeSpan ResponseTime { get; set; }
+ public Exception Exception { get; set; }
+ }
+
+
+ ///
+ /// Überprüft die Verbindung zu einem MySQL Server asynchron
+ ///
+ /// MySQL Connection String
+ /// Timeout in Sekunden (Standard: 10)
+ /// Task mit ConnectionResult
+ public static async Task CheckConnectionAsync()
+ {
+ var result = new ConnectionResult();
+ var startTime = DateTime.Now;
+
+ try
+ {
+ using (var connection = new MySqlConnection(SQL.GetConnstr(true)))
+ {
+ await connection.OpenAsync();
+
+ // Teste mit einer einfachen Abfrage
+ using (var command = new MySqlCommand("SELECT 1", connection))
+ {
+ var testResult = await command.ExecuteScalarAsync();
+
+ if (testResult != null && testResult.ToString() == "1")
+ {
+ result.IsConnected = true;
+ result.Message = "Verbindung erfolgreich hergestellt";
+ }
+ else
+ {
+ result.IsConnected = false;
+ result.Message = "Verbindung hergestellt, aber Testabfrage fehlgeschlagen";
+ }
+ }
+ }
+ }
+ catch (MySqlException ex)
+ {
+ result.IsConnected = false;
+ result.Exception = ex;
+ result.Message = GetMySqlErrorMessage(ex);
+ }
+ catch (Exception ex)
+ {
+ result.IsConnected = false;
+ result.Exception = ex;
+ result.Message = $"Unerwarteter Fehler: {ex.Message}";
+ }
+
+ result.ResponseTime = DateTime.Now - startTime;
+ return result;
+ }
+
+
+
+ ///
+ /// Gibt eine benutzerfreundliche Fehlermeldung basierend auf MySQL-Fehlercodes zurück
+ ///
+ private static string GetMySqlErrorMessage(MySqlException ex)
+ {
+ switch (ex.Number)
+ {
+ case 0:
+ return "Verbindung zum MySQL-Server konnte nicht hergestellt werden. Überprüfen Sie die Serveradresse.";
+ case 1042:
+ return "MySQL-Server ist nicht erreichbar. Überprüfen Sie die Netzwerkverbindung.";
+ case 1045:
+ return "Zugriff verweigert. Überprüfen Sie Benutzername und Passwort.";
+ case 1049:
+ return "Die angegebene Datenbank existiert nicht.";
+ case 1130:
+ return "Host ist nicht berechtigt, sich mit dem MySQL-Server zu verbinden.";
+ case 2003:
+ return "MySQL-Server ist nicht erreichbar oder läuft nicht.";
+ default:
+ return $"MySQL-Fehler ({ex.Number}): {ex.Message}";
+ }
+ }
+
+
+
+ }
+}
diff --git a/ZKuP/Notifications.xaml b/ZKuP/Notifications.xaml
index 32c3941..8e350c4 100644
--- a/ZKuP/Notifications.xaml
+++ b/ZKuP/Notifications.xaml
@@ -6,13 +6,13 @@
xmlns:local="clr-namespace:ZKuP"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
- Title="Notifications" Height="380" Width="430" MinHeight="420" MinWidth="430" MaxWidth="430" >
+ Title="Notifications" Height="380" Width="430" MinHeight="420" MinWidth="430" MaxWidth="430" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
-
+
-
+
diff --git a/ZKuP/Notifications.xaml.cs b/ZKuP/Notifications.xaml.cs
index 37073ea..7ac7f13 100644
--- a/ZKuP/Notifications.xaml.cs
+++ b/ZKuP/Notifications.xaml.cs
@@ -1,4 +1,5 @@
using MahApps.Metro.Controls;
+using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
@@ -98,7 +99,15 @@ namespace ZKuP
{
IntToBool iTb = new IntToBool();
- SQL.WriteSQL($"INSERT INTO {MainWindow.table}.notification (Username, Visitor, SMS, SMSRepeat) VALUES ('{Environment.UserName}', '{cBVisitor.SelectedValue.ToString()}', '{tbSMS.Text}', '{iTb.ConvertBack(rbRepeatYes.IsChecked.Value, typeof(int), null, null)}')");
+ //SQL.WriteSQL($"INSERT INTO {MainWindow.table}.notification (Username, Visitor, SMS, SMSRepeat) VALUES ('{Environment.UserName}', '{cBVisitor.SelectedValue.ToString()}', '{tbSMS.Text}', '{iTb.ConvertBack(rbRepeatYes.IsChecked.Value, typeof(int), null, null)}')");
+ SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.notification (Username, Visitor, SMS, SMSRepeat) VALUES (@UserName, @cBVisitor, @tbSMS, @iTb", new List()
+ {
+ new MySqlParameter("@UserName", Environment.UserName),
+ new MySqlParameter("@cBVisitor", cBVisitor.SelectedValue.ToString()),
+ new MySqlParameter("@tbSMS", tbSMS.Text),
+ new MySqlParameter("@iTb", iTb.ConvertBack(rbRepeatYes.IsChecked.Value, typeof(int), null, null))
+ });
+
QueryList();
}
@@ -117,5 +126,17 @@ namespace ZKuP
{
this.Close();
}
+
+
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
}
}
diff --git a/ZKuP/ParkausweisDisclaimer.xaml b/ZKuP/ParkausweisDisclaimer.xaml
index 72fb614..4ead262 100644
--- a/ZKuP/ParkausweisDisclaimer.xaml
+++ b/ZKuP/ParkausweisDisclaimer.xaml
@@ -1,11 +1,12 @@
-
+ Title="Parkausweis beantragen" Height="435" Width="673" WindowStyle="ToolWindow" ResizeMode="NoResize" WindowStartupLocation="CenterOwner">
@@ -78,4 +79,4 @@
-
+
diff --git a/ZKuP/ParkausweisDisclaimer.xaml.cs b/ZKuP/ParkausweisDisclaimer.xaml.cs
index 3504e31..a4ccb5b 100644
--- a/ZKuP/ParkausweisDisclaimer.xaml.cs
+++ b/ZKuP/ParkausweisDisclaimer.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using MahApps.Metro.Controls;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -17,7 +18,7 @@ namespace ZKuP
///
/// Interaktionslogik für ParkausweisDisclaimer.xaml
///
- public partial class ParkausweisDisclaimer : Window
+ public partial class ParkausweisDisclaimer : MetroWindow
{
public ParkausweisDisclaimer()
{
diff --git a/ZKuP/PrintParkausweis.xaml b/ZKuP/PrintParkausweis.xaml
index 2cc881b..22eaa7f 100644
--- a/ZKuP/PrintParkausweis.xaml
+++ b/ZKuP/PrintParkausweis.xaml
@@ -1,11 +1,12 @@
-
+ Title="Parkausweise drucken" Height="450" Width="800" Loaded="Window_Loaded" LocationChanged="Window_LocationChanged">
@@ -34,4 +35,4 @@
-
+
diff --git a/ZKuP/PrintParkausweis.xaml.cs b/ZKuP/PrintParkausweis.xaml.cs
index 8d7a0e1..53818e0 100644
--- a/ZKuP/PrintParkausweis.xaml.cs
+++ b/ZKuP/PrintParkausweis.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using MahApps.Metro.Controls;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -17,13 +18,13 @@ namespace ZKuP
///
/// Interaktionslogik für PrintParkausweis.xaml
///
- public partial class PrintParkausweis : Window
+ public partial class PrintParkausweis : MetroWindow
{
public PrintParkausweis()
{
InitializeComponent();
- var list = SQL.ReadSQL($"SELECT * FROM parkausweise WHERE Genehmigt = '1' AND Gedruckt = '0'").Result;
+ var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise WHERE Genehmigt = '1' AND Gedruckt = '0'").Result;
dgPrint.DataContext = list;
}
@@ -37,20 +38,31 @@ namespace ZKuP
{
if (MessageBox.Show(this, "Wurde der Parkausweis erfolgreich gedruckt?", "Erfolgreich gedruckt?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
{
- await SQL.WriteSQL($"UPDATE parkausweise SET Gedruckt = '1' WHERE idparkausweise = '{(int)arr[0]}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.parkausweise SET Gedruckt = '1' WHERE idparkausweise = '{(int)arr[0]}'");
}
}
else
{
if (MessageBox.Show(this, "Es wurde ein Fehler beim Vorgang festgestellt\nWurde der Parkausweis dennoch erfolgreich gedruckt?", "Fehler", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No) == MessageBoxResult.Yes)
{
- await SQL.WriteSQL($"UPDATE parkausweise SET Gedruckt = '1' WHERE idparkausweise = '{(int)arr[0]}'");
+ await SQL.WriteSQL($"UPDATE {MainWindow.table}.parkausweise SET Gedruckt = '1' WHERE idparkausweise = '{(int)arr[0]}'");
}
}
- var list = SQL.ReadSQL($"SELECT * FROM parkausweise WHERE Genehmigt = '1' AND Gedruckt = '0'").Result;
+ var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise WHERE Genehmigt = '1' AND Gedruckt = '0'").Result;
dgPrint.DataContext = list;
}
}
+
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
+
+ private void Window_LocationChanged(object sender, EventArgs e)
+ {
+ Helper.CheckWindowIsInScreenSpace(this);
+ }
}
}
diff --git a/ZKuP/Properties/AssemblyInfo.cs b/ZKuP/Properties/AssemblyInfo.cs
index 22d2233..404b172 100644
--- a/ZKuP/Properties/AssemblyInfo.cs
+++ b/ZKuP/Properties/AssemblyInfo.cs
@@ -12,7 +12,7 @@ using System.Windows;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Deutsche Bahn AG")]
[assembly: AssemblyProduct("ZKuP")]
-[assembly: AssemblyCopyright("Copyright © Marcus Bachler 2020")]
+[assembly: AssemblyCopyright("Copyright © Marcus Bachler 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -51,5 +51,5 @@ using System.Windows;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion(ZKuP.MainWindow.Version)]
+[assembly: AssemblyFileVersion(ZKuP.MainWindow.Version)]
diff --git a/ZKuP/Properties/app.manifest b/ZKuP/Properties/app.manifest
index f3b6739..94d515f 100644
--- a/ZKuP/Properties/app.manifest
+++ b/ZKuP/Properties/app.manifest
@@ -45,13 +45,13 @@
DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel und müssen sich nicht
anmelden. Für Windows Forms-Anwendungen für .NET Framework 4.6, die sich für diese Einstellung anmelden, muss
auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der "app.config" auf "true" festgelegt werden. -->
-
+