ZKuP/ZKuP/Arrivals.xaml.cs
2021-03-11 12:12:05 +01:00

446 lines
17 KiB
C#

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.Data;
using System.Windows.Documents;
using System.Windows.Input;
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 : Window
{
List<string> NamesList = new List<string>();
int firmenCount = 0;
int besucherCount = 0;
bool arrivalClicked = false;
bool kl_EinweisungClicked = false;
string query = "";
byte[] _signature = null;
Window mainWindow = null;
public Arrivals(Window main, string Parameter = "")
{
InitializeComponent();
arrivalClicked = false;
mainWindow = main;
var list = SQL.ReadListString("Select Name FROM zkup.firmen").Result;
list = list.OrderBy(p => p).ToList();
NamesList.Add("Firmen:");
NamesList.Add("------------");
NamesList.AddRange(list);
NamesList.Add("");
NamesList.Add("============");
NamesList.Add("");
firmenCount = NamesList.Count;
list = SQL.ReadListString("Select Name FROM zkup.besucher").Result;
list.OrderBy(p => p).ToList();
NamesList.Add("Besucher:");
NamesList.Add("------------");
NamesList.AddRange(list);
besucherCount = NamesList.Count - firmenCount;
cbName.ItemsSource = NamesList;
if (Parameter != "")
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.SelectedItem = Parameter;
tbAnzahlPersonen.Focus();
}
else
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.IsDropDownOpen = true;
}
if(signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnCheck.IsEnabled = true;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
}
private async void BtnCheck_Click(object sender, RoutedEventArgs e)
{
var zutritt = "";
var einweis = "";
var kl_einweis = "";
string kat = "1";
string asp = "";
string anzFzg = "";
int klUnterweis = 0;
int anzFzgGemeldet = 0;
DataTable table = new DataTable();
if (cbName.SelectedIndex < firmenCount)
{
table = await SQL.ReadSQL("Select * FROM zkup.firmen");
kat = "1";
}
else
{
table = await SQL.ReadSQL("Select * FROM zkup.besucher");
kat = "2";
}
foreach(DataRow row in table.Rows)
{
if(row.ItemArray[1].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 = 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";
}
//if (DateTime.TryParse(row.ItemArray[6].ToString(), out einweisDT))
//{
// if (DateTime.Now.Date <= einweisDT)
// einweis = "OK";
// else einweis = "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 = row.ItemArray[7].ToString();
}
}
}
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;
query = $"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob) VALUES ('{kat}','{cbName.SelectedValue.ToString().Replace(",",";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",",";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{tbKennzeichen.Text}','{tbBemerkung.Text}',@signature)";
btnSignature.IsEnabled = true;
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) btnClose.IsEnabled = true;
}
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.WriteSQL(query, _signature);
arrivalClicked = false;
this.Close();
}
signoPad.CloseConnection();
}
private async void CbName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbName.SelectedValue != 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 = await SQL.ReadSingleValueAsync($"SELECT Anzahl_Fzg FROM zkup.firmen WHERE `Name`='{cbName.SelectedValue.ToString()}' AND `Arbeitsbeginn` <= current_date() AND `Arbeitsende` >= current_date()");
lblAngemeldeteFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg + " Fzg. angemeldet" : "keine Fzg. angemeldet";
btnCheck.IsEnabled = true;
btnKarte.IsEnabled = true;
}
}
private async void btnSignature_Click(object sender, RoutedEventArgs e)
{
string kat = "1";
string firmaBesucher = "";
string name = "";
if (cbName.SelectedIndex < firmenCount)
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE Name = '{cbName.SelectedValue.ToString()}'");
}
else
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Ansprechpartner_Intern FROM zkup.besucher WHERE Name = '{cbName.SelectedValue.ToString()}'");
}
var sig = new Signature(name, cbName.SelectedValue.ToString(), tbKennzeichen.Text);
if(sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
btnCheck.IsEnabled = true;
}
}
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.SelectedIndex < firmenCount)
await SQL.WriteSQL($"UPDATE zkup.firmen SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
else
await SQL.WriteSQL($"UPDATE zkup.besucher SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
var s = query.Split(',');
s[20] = "1";
query = string.Join(",", s);
btnKlEinweisung_durchgeführt.Background = new SolidColorBrush(Colors.GreenYellow);
}
private void btnKarte_Click(object sender, RoutedEventArgs e)
{
AddCardUser aI = new AddCardUser(cbName.SelectedItem.ToString());
aI.Owner = this;
aI.ShowDialog();
}
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();
}
}
}