ZKuP/ZKuP/Arrivals.xaml.cs
2025-07-28 08:20:11 +02:00

1387 lines
62 KiB
C#

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.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.UI.WebControls.WebParts;
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.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Arrivals.xaml
/// </summary>
public partial class Arrivals : MetroWindow
{
Dictionary<int, string> NamesList = new Dictionary<int, string>();
int firmenCount = 0;
int besucherCount = 0;
bool arrivalClicked = false;
bool kl_EinweisungClicked = false;
//string query = "";
MySqlCommand query = new MySqlCommand();
byte[] _signature = null;
Window mainWindow = null;
string selectedID = "-1";
int isBesucher = 0;
string Name = "";
int belegteParkplaetze = 0;
int fzgCount = 0;
int beID = -1;
int kennzeichenHeight = 28;
/// <summary>
///
/// </summary>
/// <param name="main"></param>
/// <param name="id"></param>
/// <param name="IsBesucher">0: Firma, 1: Besucher, 2: Family</param>
public Arrivals(Window main, int id = -1, int IsBesucher = 0, string name = "")
{
InitializeComponent();
arrivalClicked = false;
mainWindow = main;
selectedID = id == -1 ? name : id.ToString();
isBesucher = IsBesucher;
Name = name;
#if !DEBUG
this.Topmost = true;
#endif
if(isBesucher == 1)
{
TextBoxHelper.SetWatermark(tbVerantwortlPerson, "Name des Besuchers");
TextBoxHelper.SetWatermark(tbNrVerantwortlPerson, "Telefonnummer des Besuchers");
btnSignature.Visibility = Visibility.Collapsed;
}
//var park = SQL.ReadListString($"SELECT parkplatznr FROM {MainWindow.table}.`parkplaetze`").Result;
//var parkG = park.Where(p => p.StartsWith("G"));
//var parkF = park.Where(p => !p.StartsWith("G"));
//if (isBesucher == 1)
//{
// var rectsG = BesuchP.Children.OfType<Rectangle>();
// foreach (Rectangle s in rectsG)
// {
// if (parkG.Contains(s.Name))
// {
// //var x = Helper.FindVisualChildren<Rectangle>(BE, s.Name).First();
// s.Fill = new SolidColorBrush(Colors.Red);
// }
// else if (!s.Name.StartsWith("Red"))
// {
// s.Fill = new SolidColorBrush(Colors.Green);
// }
// }
//}
tbAnzahlFzg.TextChanged += tbAnzahlFzg_TextChanged;
}
private async Task initialize()
{
var screen = WpfScreenHelper.Screen.FromHandle(new WindowInteropHelper(this).Handle);
var workingArea = screen.WorkingArea;
imgBE.MaxWidth = 1200;
imgBE.Width = workingArea.Right - (this.Left + this.Width) - 40;
var list = await SQL.ReadDictionary($"Select idFirmen, Name FROM {MainWindow.table}.firmen ORDER BY Name", 0, 1);
//list = list.OrderBy(p => p.Value).ToDictionary();
NamesList.Add(0, "Firmen:");
NamesList.Add(999990, "------------");
foreach (var keyValuePair in list)
NamesList.Add(keyValuePair.Key, keyValuePair.Value);
NamesList.Add(999991, "");
NamesList.Add(999992, "============");
NamesList.Add(999993, "");
firmenCount = NamesList.Count;
list = await SQL.ReadDictionary($"Select idBesucher, Name FROM {MainWindow.table}.besucher ORDER BY Name", 0, 1);
//list.OrderBy(p => p).ToList();
NamesList.Add(999994, "Besucher:");
NamesList.Add(999995, "------------");
foreach (var keyValuePair in list)
NamesList.Add(Convert.ToInt32($"9999{keyValuePair.Key}"), keyValuePair.Value);
NamesList.Add(999996, "");
NamesList.Add(999997, "============");
NamesList.Add(999998, "");
besucherCount = NamesList.Count - firmenCount;
list = await SQL.ReadDictionary($"Select idfamily, Name FROM {MainWindow.table}.family ORDER BY Name", 0, 1);
//list.OrderBy(p => p).ToList();
NamesList.Add(999999, "Führung:");
NamesList.Add(1000000, "------------");
foreach (var keyValuePair in list)
NamesList.Add(Convert.ToInt32($"1111{keyValuePair.Key}"), keyValuePair.Value);
await Dispatcher.BeginInvoke(new Action(async () =>
{
cbName.ItemsSource = NamesList;
if (int.TryParse(selectedID, out int result) && selectedID != "-1")
{
cbName.SelectionChanged += CbName_SelectionChanged;
//cbName.f = Parameter;
switch (isBesucher)
{
case 0:
cbName.SelectedValue = Convert.ToInt32(selectedID);
break;
case 1:
cbName.SelectedValue = Convert.ToInt32($"9999{selectedID}");
break;
case 2:
cbName.SelectedValue = Convert.ToInt32($"1111{selectedID}");
break;
}
//cbName.SelectedValue = isBesucher == 1 ? Convert.ToInt32($"9999{selectedID}") : Convert.ToInt32(selectedID);
tbAnzahlPersonen.Focus();
if (isBesucher == 0)
{
gridFirmenPark.Visibility = Visibility.Visible;
List<string> source = new List<string>();
bool exists = await SQL.RowExists(MainWindow.table + ".firmenPeople", "idFirmen", selectedID.ToString());
if (exists)
{
source = SQL.ReadListStringTwoColumns($"SELECT Personen, TelNr FROM {MainWindow.table}.firmenPeople WHERE idFirmen = '{selectedID}'", "|").Result.First().Split('|').ToList();
source = source.Where(p => !string.IsNullOrWhiteSpace(p)).ToList();
}
if (exists && source.Count > 1)
{
source[0] = source[0] + ";";
source[1] = source[1] + ";";
var res = SQL.ReadListStringMultipleColumns($"SELECT Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter FROM {MainWindow.table}.firmen WHERE `idFirmen` = '{selectedID}' LIMIT 1").Result.First().Split(';');
if (!source[0].Contains(res[0]))
{
source[0] += res[0];
source[1] += res[1];
}
tbVerantwortlPerson.ItemsSource = source[0].TrimEnd(';').Split(';');
tbNrVerantwortlPerson.ItemsSource = source[1].TrimEnd(';').Split(';');
tbVerantwortlPerson.SelectedValue = res[0];
tbNrVerantwortlPerson.Text = res[1];
tbAnzahlPersonen.Text = Regex.IsMatch(res[2].ToString(), "[0-9]") ? (Convert.ToInt16(res[2]) + 1).ToString() : "";
if ((tbVerantwortlPerson.ItemsSource as string[]).Count() > 1)
{
tbMultiplePeople.Visibility = Visibility.Visible;
var tt = new ToolTip();
tt.Content = "Mehrere Personen stehen zur Auswahl";
tt.PlacementTarget = tbMultiplePeople;
tt.Placement = System.Windows.Controls.Primitives.PlacementMode.Right;
tt.HorizontalOffset = -20;
tt.VerticalOffset = 30;
tbMultiplePeople.ToolTip = tt;
tt.IsOpen = true;
System.Windows.Threading.DispatcherTimer t = new System.Windows.Threading.DispatcherTimer();
t.Interval = TimeSpan.FromSeconds(5);
t.Tick += (s, e) => { Dispatcher.Invoke(() => tt.IsOpen = false); t.Stop(); };
t.Start();
}
}
else
{
var res = SQL.ReadListStringMultipleColumns($"SELECT Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter FROM {MainWindow.table}.firmen WHERE `idFirmen` = '{selectedID}' LIMIT 1").Result.First().Split(';');
tbVerantwortlPerson.ItemsSource = new List<string>() { res[0] };
tbNrVerantwortlPerson.ItemsSource = new List<string>() { res[1] };
tbVerantwortlPerson.SelectedValue = res[0];
tbNrVerantwortlPerson.SelectedValue = res[1];
tbAnzahlPersonen.Text = Regex.IsMatch(res[2].ToString(), "[0-9]") ? (Convert.ToInt16(res[2]) + 1).ToString() : "";
}
}
else if (isBesucher == 1)
{
var res = SQL.ReadListStringMultipleColumns($"SELECT Name,Tel_Nr_Besucher,Anzahl_Begleitpersonen FROM {MainWindow.table}.besucher WHERE `idbesucher` = '{selectedID}' LIMIT 1").Result.First().Split(';');
tbVerantwortlPerson.ItemsSource = new List<string>() { res[0] };
tbNrVerantwortlPerson.ItemsSource = new List<string>() { res[1] };
tbVerantwortlPerson.Text = res[0];
tbNrVerantwortlPerson.Text = res[1];
tbAnzahlPersonen.Text = (Convert.ToInt16(res[2]) + 1).ToString();
}
else if (isBesucher == 2)
{
var res = SQL.ReadListStringTwoColumns($"SELECT TelNr AS Tel_Nr_Besucher,AnzBegleiter FROM {MainWindow.table}.family WHERE `Name` = '{Name}' AND `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' LIMIT 1").Result.First().Split(';');
tbVerantwortlPerson.ItemsSource = new List<string>() { Name };
tbNrVerantwortlPerson.ItemsSource = new List<string>() { res[0] };
tbVerantwortlPerson.Text = Name;
tbNrVerantwortlPerson.Text = res[0];
tbAnzahlPersonen.Text = res[1];
}
}
else
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.IsDropDownOpen = true;
}
if (signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnCheck.IsEnabled = true;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
}));
if (isBesucher == 0)
{
foreach (TextBlock tb in Helper.FindVisualChildren<TextBlock>(gridFirmenPark))//.Where(p => p.Tag == null))
{
if (Regex.IsMatch(tb.Text, @"\d+"))
{
StackPanel sp = new StackPanel();
string parkplatz = tb.Text.PadLeft(2, '0');
var img = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Assets/Parkplatz/{parkplatz}.png", UriKind.Absolute));
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 });
tb.ToolTip = sp;
ToolTipService.SetInitialShowDelay(tb, 100);
ToolTipService.SetBetweenShowDelay(tb, 100);
}
}
string x = SQL.ReadSingleValue($"SELECT BEint FROM {MainWindow.table}.firmen WHERE idFirmen = '{selectedID}'");
string y = SQL.ReadSingleValue($"SELECT Parkplatz FROM {MainWindow.table}.beParkplaetze WHERE beNr = '{x}'").TrimEnd(',');
beID = Convert.ToInt16(x != "" ? x : "-1");
if (beID != -1)
{
var be = Helper.GetBEFileNames(beID.ToString());
imgBE.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"{be}", UriKind.Absolute));
imgBE.Stretch = Stretch.UniformToFill;
lblParkNumbers.Text = $"Nur folgende Parkplätze vergeben: {y}";
popBE.IsOpen = true;
}
}
if (isBesucher == 1)
{
gridBesucherPark.Visibility = Visibility.Visible;
//GParkRow.Height = new GridLength(1.8, GridUnitType.Star);
//this.Height = this.Height + 100;
//GParkTop.Height = new GridLength(GParkTop.Height.Value + 100, GridUnitType.Pixel);
var besucher = SQL.ReadSingleValue($"SELECT besucherList FROM {MainWindow.table}.besucherGroups WHERE idBesucher = '{selectedID}'");
if (besucher.Contains(';'))
{
var finalBesucher = besucher.TrimEnd(';').Split(';');
lblAngemeldeteBesucher.Text = $"{finalBesucher.Length} angemeldet";
foreach (var b in finalBesucher)
{
var lbl = new TextBlock() { Text = "- " + b, Height = 25, FontSize = 14 };
lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
spBesucher.Children.Add(lbl);
}
popBesucher.Height = 50 + (finalBesucher.Length * 25) + 10;
popBesucher.IsOpen = true;
}
}
usePark(await Task.Run(() => getPark()));
checkPark();
this.SizeChanged += MainWindow_SizeChanged;
}
private async Task<Tuple<List<string>, List<string>>> getPark()
{
//if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner)
//{
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 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 = park.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList();
for (var p = 0; p < park.Count; p++) park[p] = park[p].PadLeft(2, '0');
var justPark = park.ToList();
park.AddRange(singlePark.Keys);
return new Tuple<List<string>, List<string>> (justPark, park);
}
private void usePark(Tuple<List<string>, List<string>> parkLists)
{
var justPark = parkLists.Item1;
var park = parkLists.Item2;
var rects = gridFirmenPark.Children.OfType<Rectangle>();
foreach (Rectangle s in rects)
{
if (park.Contains(s.Name.TrimStart('P').PadLeft(2, '0')))
{
//var x = Helper.FindVisualChildren<Rectangle>(BE, s.Name).First();
s.Fill = new SolidColorBrush(Colors.Red);
}
else if (!s.Name.StartsWith("Red"))
{
s.Fill = new SolidColorBrush(Colors.Green);
}
}
if (BesuchP.Children.OfType<Grid>().Count() > 0)
{
var rectsG = BesuchP.Children.OfType<Grid>().First().Children.OfType<Rectangle>();
foreach (Rectangle s in rectsG)
{
if (park.Contains(s.Name))
{
//var x = Helper.FindVisualChildren<Rectangle>(BE, s.Name).First();
s.Fill = new SolidColorBrush(Colors.Red);
}
else if (!s.Name.StartsWith("Red"))
{
s.Fill = new SolidColorBrush(Colors.Green);
}
}
}
if (isBesucher == 0)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict = SQL.ReadDictionary2($"SELECT beNr, Parkplatz FROM {MainWindow.table}.beParkplaetze", 0, 1).Result;
foreach (Rectangle rect in Helper.FindVisualChildren<Rectangle>(gridFirmenPark).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 = SQL.ReadSingleValue($"SELECT beNr FROM {MainWindow.table}.beParkplaetze WHERE Parkplatz LIKE '%{nr},%'");
var x = dict.Where(kv => kv.Value.Contains(nr)).Select(kv => kv.Key);
var be = x.Count() > 0 ? x.First() : "";
//Helper.FindVisualChildren<TextBlock>(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 = gridFirmenPark.FindChildren<TextBlock>().Where(p => p.Text == nr.TrimStart('0')).First();
tb.ToolTip = sp;
tb.PreviewMouseLeftButtonDown -= ParkSetPreviewMouseLeftButtonDown;
rect.Fill = new SolidColorBrush(Colors.Orange);
}
}
}
}
belegteParkplaetze = rects.Where(p => p.Fill.ToString() == Brushes.Red.ToString()).Count();
}
private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
{
var screen = WpfScreenHelper.Screen.FromHandle(new WindowInteropHelper(this).Handle);
var workingArea = screen.WorkingArea;
// Maximale Top-Position, sodass das Fenster unten nicht rausgeht
if (this.Top + this.ActualHeight > workingArea.Bottom)
{
this.Top = workingArea.Bottom - this.ActualHeight;
}
// Optionale obere Begrenzung
if (this.Top < workingArea.Top)
{
this.Top = workingArea.Top;
}
}
private async void BtnCheck_Click(object sender, RoutedEventArgs e)
{
var zutritt = "";
string kat = "1";
var einweis = "";
var kl_einweis = "";
string asp = "";
string anzFzg = "";
int klUnterweis = 0;
int anzFzgGemeldet = 0;
DataTable table = new DataTable();
if (cbName.SelectedIndex < firmenCount)
{
table = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.firmen");
kat = "1";
}
else if (cbName.SelectedIndex >= (firmenCount + besucherCount + 2))
{
table = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.family");
kat = "5";
}
else
{
table = await SQL.ReadSQL($"Select * FROM {MainWindow.table}.besucher");
kat = "2";
}
foreach(DataRow row in table.Rows)
{
if (row.ItemArray[1].ToString() == cbName.SelectedItem.ToString().Split(',')[1].ToString().Replace("]", "").TrimStart(' ') || $"9999{row.ItemArray[0].ToString()}" == cbName.SelectedValue.ToString() || row.ItemArray[0].ToString() == cbName.SelectedValue.ToString())
{
DateTime beginnDT;
DateTime endeDT;
DateTime einweisDT;
DateTime kl_einweisDT;
if (kat == "1")
{
if (string.IsNullOrWhiteSpace(tbAnzahlFzg.Text))
{
MessageBox.Show(this, "Anzahl Fahrzeuge eingeben", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if (string.IsNullOrWhiteSpace(tbAnzahlPersonen.Text))
{
MessageBox.Show(this, "Anzahl Personen eingeben", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if (DateTime.TryParse(row.ItemArray[7].ToString(), out beginnDT)
&& DateTime.TryParse(row.ItemArray[8].ToString(), out endeDT))
{
if (DateTime.Now.Date >= beginnDT.Date && DateTime.Now.Date <= endeDT.Date)
zutritt = "OK";
else zutritt = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
}
if (Convert.ToInt16(tbAnzahlFzg.Text) <= Convert.ToInt16(row.ItemArray[5]))
{
anzFzg = "OK";
}
else
{
anzFzg = $"Nur {row.ItemArray[5].ToString()} Fahrzeug(e) angemeldet";
}
anzFzgGemeldet = row.ItemArray[5] != null ? Convert.ToInt16(row.ItemArray[5]) : 0;
if (DateTime.TryParse(row.ItemArray[9].ToString(), out einweisDT))
{
if(row.ItemArray[9].ToString() == "01.01.1903 00:00:00")
{
einweis = "Nur in Begleitung";
}
else if (DateTime.Now.Date <= einweisDT)
einweis = "OK";
else einweis = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
}
if(DateTime.TryParse(row.ItemArray[12].ToString(), out kl_einweisDT))
{
if (DateTime.Now.Date <= einweisDT)
{
kl_einweis = "OK";
klUnterweis = 1;
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
}
else
{
kl_einweis = "Bitte kleine Unterweisung durchführen!";
klUnterweis = 0;
}
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text; //row.ItemArray[10].ToString();
}
if (kat == "2")
{
if (DateTime.TryParse(row.ItemArray[5].ToString(), out beginnDT))
{
if (DateTime.Now.Date == beginnDT)
zutritt = "OK";
else zutritt = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
}
einweis = "--";
anzFzg = "--";
if (DateTime.TryParse(row.ItemArray[9].ToString(), out kl_einweisDT))
{
if (DateTime.Now.Date <= kl_einweisDT)
{
kl_einweis = "OK";
klUnterweis = 1;
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text;
//asp = row.ItemArray[7].ToString();
}
if(kat == "5")
{
zutritt = "OK";
anzFzg = "--";
kl_einweis = "--";
einweis = "--";
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text;
}
}
}
lblAnmeldung.Content = zutritt;
if (zutritt == "OK") lblAnmeldung.Background = new SolidColorBrush(Colors.LightGreen);
else if (zutritt == "Prüfen!") lblAnmeldung.Background = new SolidColorBrush(Colors.LightYellow);
else lblAnmeldung.Background = new SolidColorBrush(Colors.LightSalmon);
lblFahrzeuge.Content = anzFzg;
if (anzFzg == "OK") lblFahrzeuge.Background = new SolidColorBrush(Colors.LightGreen);
else if (anzFzg.StartsWith("Nur")) lblFahrzeuge.Background = new SolidColorBrush(Colors.LightYellow);
else if (anzFzg == "--") lblFahrzeuge.Background = new SolidColorBrush(Colors.LightGray);
else lblFahrzeuge.Background = new SolidColorBrush(Colors.LightSalmon);
lblEinweisung.Content = einweis;
if (einweis == "OK") lblEinweisung.Background = new SolidColorBrush(Colors.LightGreen);
else if (einweis == "Prüfen!") lblEinweisung.Background = new SolidColorBrush(Colors.LightYellow);
else if (einweis == "--") lblEinweisung.Background = new SolidColorBrush(Colors.LightGray);
else lblEinweisung.Background = new SolidColorBrush(Colors.LightSalmon);
lblKleineUnterweisung.Content = kl_einweis;
if (kl_einweis == "OK") lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightGreen);
else if (kl_einweis == "Kleine Unterweisung durchführen!")
{
lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightYellow);
lblKleineUnterweisung.Content = kl_einweis;
}
else lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightSalmon);
var AnzPers = "0";
var AnzFzg = "0";
if (tbAnzahlFzg.Text != "")
AnzFzg = tbAnzahlFzg.Text;
if (tbAnzahlPersonen.Text != "")
AnzPers = tbAnzahlPersonen.Text;
if (einweis == "") einweis = "Fehlerhaft";
if (zutritt == "") zutritt = "Fehlerhaft";
arrivalClicked = true;
btnClose_Copy.Visibility = Visibility.Collapsed;
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
fzgCount = string.IsNullOrWhiteSpace(tbAnzahlFzg.Text) ? 0 : Convert.ToInt32(tbAnzahlFzg.Text);
for (var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
{
if (!string.IsNullOrWhiteSpace(((kennzeichenTextboxes[i]) as TextBox).Text))
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
}
if (int.TryParse(selectedID, out int result))
{
var idFirma_Besucher = selectedID.StartsWith("9999") ? Convert.ToInt32(selectedID.ToString().Substring(3)) : Convert.ToInt32(selectedID);
//query = $"INSERT INTO {MainWindow.table}.zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob,idFirma_Besucher) VALUES ('{kat}','{cbName.Text.ToString().Replace(",", ";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",", ";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{kennzeichen}','{tbBemerkung.Text}',@signature,'{idFirma_Besucher}')";
//query = $"INSERT INTO {MainWindow.table}.zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob,idFirma_Besucher) VALUES (@kat,@name,@time,@zutritt,@einweis,@anzPers,@anzFzg,@asp,@klUnterweis,@anzFzgGemeldet,@kennzeichen,@bemerkung,@idFirma_Besucher)";
query = SQL.CreateAndReturnSQLCommand($"INSERT INTO {MainWindow.table}.zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob,idFirma_Besucher) VALUES (@kat,@name,@time,@zutritt,@einweis,@anzPers,@anzFzg,@asp,@klUnterweis,@anzFzgGemeldet,@kennzeichen,@bemerkung,@signature,@idFirma_Besucher)", new List<MySqlParameter>()
{
new MySqlParameter("@kat",kat),
new MySqlParameter("@name", cbName.Text.ToString().Replace(",", ";")),
new MySqlParameter("@time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
new MySqlParameter("@zutritt", zutritt),
new MySqlParameter("@einweis", einweis),
new MySqlParameter("@anzPers", AnzPers.Replace(",", ";")),
new MySqlParameter("@anzFzg", AnzFzg.Replace(",", ";")),
new MySqlParameter("@asp", asp.Replace(",", ";")),
new MySqlParameter("@klUnterweis", klUnterweis),
new MySqlParameter("@anzFzgGemeldet", anzFzgGemeldet),
new MySqlParameter("@kennzeichen", kennzeichen),
new MySqlParameter("@bemerkung", tbBemerkung.Text),
new MySqlParameter("@idFirma_Besucher", idFirma_Besucher)
});
btnSignature.IsEnabled = true;
}
else
{
//query = $"INSERT INTO {MainWindow.table}.zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung) VALUES ('{kat}','{cbName.Text.ToString().Replace(",", ";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",", ";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{kennzeichen}','{tbBemerkung.Text}')";
query = SQL.CreateAndReturnSQLCommand($"INSERT INTO {MainWindow.table}.zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung) VALUES (@kat,@name,@time,@zutritt,@einweis,@anzPers,@anzFzg,@asp,@klUnterweis,@anzFzgGemeldet,@kennzeichen,@bemerkung)", new List<MySqlParameter>()
{
new MySqlParameter("@kat",kat),
new MySqlParameter("@name", cbName.Text.ToString().Replace(",", ";")),
new MySqlParameter("@time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
new MySqlParameter("@zutritt", zutritt),
new MySqlParameter("@einweis", einweis),
new MySqlParameter("@anzPers", AnzPers.Replace(",", ";")),
new MySqlParameter("@anzFzg", AnzFzg.Replace(",", ";")),
new MySqlParameter("@asp", asp.Replace(",", ";")),
new MySqlParameter("@klUnterweis", klUnterweis),
new MySqlParameter("@anzFzgGemeldet", anzFzgGemeldet),
new MySqlParameter("@kennzeichen", kennzeichen),
new MySqlParameter("@bemerkung", tbBemerkung.Text),
});
btnSignature.IsEnabled = false;
}
if (klUnterweis == 0) btnKlEinweisung_durchgeführt.IsEnabled = true;
else if (klUnterweis == 1)
{
btnKlEinweisung_durchgeführt.ToolTip = "Kleine Unterweisung wurde bereits durchgeführt\nBestätigung nicht nötig";
btnSignature.ToolTip = "Kleine Unterweisung wurde bereits durchgeführt\nUnterschrift nicht nötig";
btnSignature.Content = "Unterschrift bereits vorhanden";
}
if (arrivalClicked)
{
btnKarte.IsEnabled = true;
if (SQL.ReadSingleValue($"SELECT EXISTS (SELECT * FROM {MainWindow.table}.karten WHERE benutzer = '{tbVerantwortlPerson.Text}' AND farbe = 'Grün')") == "1")
{
btnKarte.Content = $"{tbVerantwortlPerson.Text} hat bereits eine grüne Karte\nZusätzliche Personen können hier eingetragen werden";
btnClose.IsEnabled = true;
}
}
if (kat == "2")
{
#if !DEBUG
// Vorerst deaktiviert, da ich beim Pförtner überprüfen muss ob das alles so funktioniert
//
//
//if (MainWindow.LoggedInRole == Roles.Pförtner)
//{
// Helper.PrintPDF("\\\\mhb00swfs003v.fv-werke.db.de\\GLW99\\ZKuP\\Einweisungsflyer.pdf");
// btnCheck.Content = "Einweisungflyer wird gedruckt...";
//}
#endif
}
}
private void checkPark()
{
var rects = gridFirmenPark.Children.OfType<Rectangle>();
if (int.TryParse(tbAnzahlFzg.Text, out int anz))
if (anz > 0 && beID == -1)
if ((rects.Where(p => p.Fill.ToString() == Brushes.Red.ToString()).Count() - belegteParkplaetze) >= anz)
{
lblSelectAParkplatz.Visibility = Visibility.Collapsed;
}
else
{
lblSelectAParkplatz.Visibility = Visibility.Visible;
}
else if (anz > 0 && beID != -1)
lblSelectAParkplatz.Visibility = Visibility.Collapsed;
}
protected override void OnClosing(CancelEventArgs e)
{
try
{
if (arrivalClicked)
{
e.Cancel = true;
MessageBox.Show(this, "Ankunft wurde geklickt\n\nBitte Fenster über \"Schließen\"-Button schließen", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
signoPad.CloseConnection();
mainWindow.Focus();
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show("Fehler: " + ex.Message);
}
}
private async void Close_Click(object sender, RoutedEventArgs e)
{
if (arrivalClicked)
{
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.changes SET timestamp = @time WHERE `table` = 'arrivals'", new List<MySqlParameter>()
{
new MySqlParameter("@time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
});
try
{
if (_signature != null)
{
await SQL.CreateAndWriteSQLwithSignature(query, _signature);
}
else
{
query.CommandText = query.CommandText.Replace(",@signature", "");
query.CommandText = query.CommandText.Replace(",signature_blob", "");
await SQL.CreateAndWriteSQL(query);
}
arrivalClicked = false;
this.Close();
}
catch (Exception ex)
{
MessageBox.Show("Bei der Übertragung der Daten ist ein Fehler aufgetreten.\nBitte die Ankunft nochmal bestätigen.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
Log.WriteLog(ex.ToString());
this.Close();
}
}
signoPad.CloseConnection();
signoPad.CloseConnection();
}
private async void CbName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbName.SelectedItem != null)
{
if(cbName.SelectedItem.ToString() == "------------" || cbName.SelectedItem.ToString() == "============" || cbName.SelectedItem.ToString() == "Besucher:" || cbName.SelectedItem.ToString() == "Firmen:" || (cbName.SelectedItem.ToString() == "" && cbName.SelectedIndex != -1))
{
cbName.SelectedIndex = -1;
MessageBox.Show(this, "Dieses Feld kann nicht gewählt werden", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
string a_Fzg = "0";
if (cbName.SelectedIndex < firmenCount)
{
a_Fzg = await SQL.ReadSingleValueAsync($"SELECT Anzahl_Fzg FROM {MainWindow.table}.firmen WHERE `idFirmen`='{selectedID}' AND `Arbeitsbeginn` <= current_date() AND `Arbeitsende` >= current_date()");
lblAngemeldeteFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg + " Fzg. angemeldet" : "keine Fzg. angemeldet";
tbAnzahlFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg : "";
}
else
{
lblAngemeldeteFzg.Text = "Besucher nur ohne Fzg.";
tbAnzahlFzg.Text = "0";
}
//spKennzeichen.Children.Clear();
//if (!string.IsNullOrWhiteSpace(a_Fzg))
//{
// fzgCount = Convert.ToInt16(a_Fzg);
// for (var i = 0; i < fzgCount; ++i)
// {
// spKennzeichen.Children.Add(new TextBox()
// {
// Name = $"tbKennzeichen{i + 1}",
// Height = 23,
// Margin = new Thickness(0, 2, 0, 0),
// TextWrapping = TextWrapping.Wrap,
// VerticalAlignment = VerticalAlignment.Top,
// TextAlignment = TextAlignment.Center,
// Padding = new Thickness(0, 2, 0, 0),
// TabIndex = 5 + i
// });
// spKennzeichen.Children.Add(new TextBlock()
// {
// Margin = new Thickness(0, -21, 0, 0),
// Width = 100,
// TextWrapping = TextWrapping.Wrap,
// Text = $"{i+1}. Kennzeichen",
// VerticalAlignment = VerticalAlignment.Top,
// HorizontalAlignment = HorizontalAlignment.Left,
// Foreground = new SolidColorBrush(Colors.Gray),
// Padding = new Thickness(5, 0, 0, 0)
// });
// this.Height = this.Height + kennzeichenHeight;
// }
//}
btnCheck.IsEnabled = true;
btnKarte.IsEnabled = true;
}
}
List<string> selectedPark = new List<string>();
string time = "";
private async void ParkSetPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Admin)
{
if (time == "") time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var parkplatz = (sender as TextBlock).Text;
if ((parkplatz == "7" && gridFirmenPark.Children.OfType<Rectangle>().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" && gridFirmenPark.Children.OfType<Rectangle>().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" && gridFirmenPark.Children.OfType<Rectangle>().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 gridFirmenPark.Children.OfType<Rectangle>())
{
if (rect.Name == "P" + parkplatz)
{
if (rect.Fill.ToString() == Colors.Red.ToString())
{
rect.Fill = new SolidColorBrush(Colors.Green);
//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);
selectedPark.Remove(parkplatz);
}
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})");
var command = new MySqlCommand($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr, firma, AusgegebenDurch, AusgegebenTimestamp, TelVerantwortlicherFirma) VALUES (@pParkplatz, @pFirma, @pAusgeber, @pTime, @pTel)");
command.Parameters.Add(new MySqlParameter("pParkplatz", parkplatz));
command.Parameters.Add(new MySqlParameter("pFirma", cbName.SelectedValue.ToString()));
command.Parameters.Add(new MySqlParameter("pAusgeber", Helper.InsertSpaceBeforeUpperCase(Environment.UserName)));
command.Parameters.Add(new MySqlParameter("pTime", time));
command.Parameters.Add(new MySqlParameter("pTel", tbNrVerantwortlPerson.Text));
await SQL.WriteSQL(command);
selectedPark.Add(parkplatz);
}
}
}
if (selectedPark.Count > 0)
{
string s = "";
s = String.Join(", ", selectedPark.OrderBy(p => p));
//s = s.TrimEnd(',');
borderParkkarteFirmaAusgeben.Visibility = Visibility.Visible;
lblParkkarteFirmaAusgeben.Text = $"Parkkarte Nr. {s}\nan Firma {cbName.Text} ausgeben";
}
else
{
lblParkkarteFirmaAusgeben.Text = "";
borderParkkarteFirmaAusgeben.Visibility = Visibility.Collapsed;
}
checkPark();
}
}
List<string> selectedGPark = new List<string>();
private async void G_ParkPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var block = sender as TextBlock;
var parkplatz = block.Text;
foreach (var rect in BesuchP.Children.OfType<Rectangle>())
{
if (rect.Name == "G" + parkplatz)
{
if (rect.Fill.ToString() == Colors.Red.ToString())
{
rect.Fill = new SolidColorBrush(Colors.Green);
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkplaetze WHERE parkplatznr='G{parkplatz}'");
selectedGPark.Remove(parkplatz);
}
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.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.parkplaetze (parkplatznr, AusgegebenDurch) VALUES (@parkplatznr, @ausgegeben)", new List<MySqlParameter>()
{
new MySqlParameter("@parkplatznr", $"G{parkplatz}"),
new MySqlParameter("@ausgegeben", Helper.InsertSpaceBeforeUpperCase(Environment.UserName))
});
selectedGPark.Add(parkplatz);
}
}
}
if (selectedGPark.Count > 0)
{
string s = "";
s = String.Join(", ", selectedGPark.OrderBy(p => p));
//s = s.TrimEnd(',');
borderParkkarteAusgeben.Visibility = Visibility.Visible;
lblParkkarteAusgeben.Text = $"Parkkarte Nr. {s}\nan Besucher {cbName.Text} ausgeben";
}
else
{
lblParkkarteAusgeben.Text = "";
borderParkkarteAusgeben.Visibility = Visibility.Collapsed;
}
}
private async void btnSignature_Click(object sender, RoutedEventArgs e)
{
string kat = "1";
string firmaBesucher = "";
string name = "";
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
if (kennzeichenTextboxes != null)
{
for (var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
}
//if (cbName.SelectedIndex < firmenCount)
//{
// //firmaBesucher = cbName.SelectedItem.ToString();
// name = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM {MainWindow.table}.firmen WHERE `idFirmen` = '{selectedID}'");
//}
//else
//{
// //firmaBesucher = cbName.SelectedItem.ToString();
// name = await SQL.ReadSingleValueAsync($"SELECT Ansprechpartner_Intern FROM {MainWindow.table}.besucher WHERE `idBesucher` = '{selectedID}'");
//}
name = tbVerantwortlPerson.Text;
Sign(name, kennzeichen);
}
private void Sign(string name, string kennzeichen)
{
if (signoPad._stPad.DeviceGetCount() > 0)
{
var sig = new Signature(Signature.DisclaimerType.Parken, name, cbName.SelectedItem.ToString(), kennzeichen);
if (sig.ShowDialog() == false)
{
if (sig.ResultByte != null)
{
_signature = sig.ResultByte;
btnCheck.IsEnabled = true;
}
else
{
MessageBox.Show("Keine Unterschrift, erneut versuchen", "Keine Unterschrift", MessageBoxButton.OK, MessageBoxImage.Error);
Sign(name, kennzeichen);
}
}
}
else
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x01", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
private async void btnKlEinweisung_durchgeführt_Click(object sender, RoutedEventArgs e)
{
if (signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
else { btnSignature.IsEnabled = true; btnSignature.Content = "Unterschrift einholen!"; }
if (!cbName.SelectedValue.ToString().StartsWith("9999"))
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE `idFirmen` = '{selectedID}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Kleine_Unterweisung_bis = @DateTime WHERE `idFirmen` = @selectedID", new List<MySqlParameter>()
{
new MySqlParameter("@DateTime", (DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")),
new MySqlParameter("@selectedID", selectedID)
});
}
else
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE `idBesucher` = '{selectedID}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Kleine_Unterweisung_bis = @DateTime WHERE `idBesucher` = @selectedID", new List<MySqlParameter>()
{
new MySqlParameter("@DateTime", (DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")),
new MySqlParameter("@selectedID", selectedID)
});
}
//
// Fehler s[20] beheben, Spalte 20 vermutlich falsch
// Tritt nur mit Button kleine Einweisung aus
//
var qText = query.CommandText;
var s = qText.Split(',');
s[21] = "1";
query.CommandText = string.Join(",", s);
btnKlEinweisung_durchgeführt.Background = new SolidColorBrush(Colors.GreenYellow);
}
private void btnKarte_Click(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrWhiteSpace(tbAnzahlPersonen.Text))
{
var ap = SQL.ReadSingleValue($"SELECT Ansprechpartner_Intern FROM {MainWindow.table}.firmen WHERE idFirmen='{selectedID}'");
var user = "";
if(isBesucher == 1 && Convert.ToInt16(tbAnzahlPersonen.Text) > 1)
{
user = SQL.ReadSingleValue($"SELECT besucherList FROM {MainWindow.table}.besucherGroups WHERE idbesucher = '{selectedID}'");
}
for (var i = 0; i < Convert.ToInt16(tbAnzahlPersonen.Text); i++)
{
if (i == 0)
{
var hasEinweisung = lblEinweisung.Background.ToString() == Brushes.LightGreen.ToString() ? true : false;
if (isBesucher == 1)
{
AddCardUser aI = new AddCardUser(tbVerantwortlPerson.Text, true, (i + 1).ToString() + " / " + tbAnzahlPersonen.Text, ap, true, hasEinweisung, "", tbNrVerantwortlPerson.Text);
aI.Owner = this;
aI.ShowDialog();
}
else
{
AddCardUser aI = new AddCardUser(tbVerantwortlPerson.Text, false, (i + 1).ToString() + " / " + tbAnzahlPersonen.Text, ap, true, hasEinweisung, cbName.Text, tbNrVerantwortlPerson.Text, selectedID);
aI.Owner = this;
aI.ShowDialog();
}
}
else
{
var hasEinweisung = lblEinweisung.Background.ToString() == Brushes.LightGreen.ToString() ? true : false;
var u = "";
if (user.Contains(';')) u = user.Split(';')[i - 1];
if (isBesucher == 1)
{
AddCardUser aI = new AddCardUser(u, true, (i + 1).ToString() + " / " + tbAnzahlPersonen.Text, ap, false, hasEinweisung, "");
aI.Owner = this;
aI.ShowDialog();
}
else
{
AddCardUser aI = new AddCardUser(u, false, (i + 1).ToString() + " / " + tbAnzahlPersonen.Text, ap, false, hasEinweisung, cbName.Text, "", selectedID);
aI.Owner = this;
aI.ShowDialog();
}
}
}
if (arrivalClicked) btnClose.IsEnabled = true;
}
else MessageBox.Show("Anzahl Personen muss angegeben werden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
private void Window_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
this.Opacity = 1;
}
private void Window_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
this.Opacity = 0.5;
}
private void CloseWithX_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
await initialize();
spinnerCanvas.Visibility = Visibility.Collapsed;
//tbAnzahlFzg.Text = "0";
Helper.CheckWindowIsInScreenSpace(this);
}
private void tbAnzahlPersonen_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!Regex.IsMatch(e.Text, "[0-9]"))
{
e.Handled = true;
ToolTip tip = new ToolTip();
tip.Content = "Nur Zahlen erlaubt";
tip.StaysOpen = false;
(sender as TextBox).ToolTip = tip;
tip.IsOpen = true;
}
}
private void tbAnzahlFzg_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!Regex.IsMatch(e.Text, "[0-9]"))
{
e.Handled = true;
ToolTip tip = new ToolTip();
tip.Content = "Nur Zahlen erlaubt";
tip.StaysOpen = false;
(sender as TextBox).ToolTip = tip;
tip.IsOpen = true;
}
}
bool alreadyWarned = false;
bool secondRun = false;
private void tbAnzahlFzg_TextChanged(object sender, TextChangedEventArgs e)
{
var tb = (sender as TextBox).Text;
if (isBesucher == 1 && tb != "0" && !string.IsNullOrWhiteSpace(tb) && !alreadyWarned)
{
MessageBox.Show("Besucher dürfen nicht mit einem Fahrzeug einfahren!\nDem Besucher einen Besucherparkplatz zuweisen!", "Einfahrt verboten!", MessageBoxButton.OK, MessageBoxImage.Error);
alreadyWarned = true;
//e.Handled = true;
}
if (Regex.IsMatch(tb, "^0.") || string.IsNullOrWhiteSpace(tb))
{
//this.Height = this.Height - (spKennzeichen.Children.Count / 2) * kennzeichenHeight;
if (isBesucher == 0)
{
this.Height = this.MinHeight;
lblSelectAParkplatz.Visibility = Visibility.Collapsed;
}
}
else
{
fzgCount = Convert.ToInt16(tb);
spKennzeichen.Children.Clear();
//spKennzeichen.Height = 0;
if (isBesucher == 0)
this.Height = this.MinHeight;
//else if (isBesucher == 1)
// this.Height = this.MinHeight + 100;
for (var i = 0; i < fzgCount; ++i)
{
spKennzeichen.Children.Add(new TextBox()
{
Name = $"tbKennzeichen{i + 1}",
Height = 23,
Margin = new Thickness(0, 2, 0, 0),
TextWrapping = TextWrapping.Wrap,
VerticalAlignment = VerticalAlignment.Top,
TextAlignment = TextAlignment.Center,
Padding = new Thickness(0, 2, 0, 0),
TabIndex = 5 + i
});
TextBoxHelper.SetWatermark((spKennzeichen.Children[spKennzeichen.Children.Count - 1] as TextBox), $"{i + 1}. Kennzeichen");
(spKennzeichen.Children[spKennzeichen.Children.Count - 1] as TextBox).CharacterCasing = CharacterCasing.Upper;
//spKennzeichen.Children.Add(new TextBlock()
//{
// Margin = new Thickness(0, -21, 0, 0),
// Width = 100,
// TextWrapping = TextWrapping.Wrap,
// Text = $"{i + 1}. Kennzeichen",
// VerticalAlignment = VerticalAlignment.Top,
// HorizontalAlignment = HorizontalAlignment.Left,
// Foreground = new SolidColorBrush(Colors.Gray),
// Padding = new Thickness(5, 0, 0, 0)
//});
//this.Height = this.Height + kennzeichenHeight;
}
this.Height = this.Height + (spKennzeichen.Children.Count) * kennzeichenHeight;
spKennzeichen.Height = (spKennzeichen.Children.Count) * kennzeichenHeight;
kennzeichenRow.Height = new GridLength(spKennzeichen.Height);
}
if(secondRun) checkPark();
secondRun = true;
}
private void btnCloseBE_Click(object sender, RoutedEventArgs e)
{
popBE.IsOpen = false;
}
private void btnClosePopBesucher_Click(object sender, RoutedEventArgs e)
{
popBesucher.IsOpen = false;
}
private void Window_LocationChanged(object sender, EventArgs e)
{
Helper.CheckWindowIsInScreenSpace(this);
}
}
}