ZKuP/ZKuP/AddCardUser.xaml.cs
Marcus b8f7c7bf6e Umstellung auf SSL
Neue Icons für Konnektivität
Warnings beseitigt
PreUpgrade von BouncyCastle
2025-07-29 11:57:02 +02:00

187 lines
7.4 KiB
C#

using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
using System.IO;
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 AddCardUser.xaml
/// </summary>
public partial class AddCardUser : MetroWindow
{
string _user = "";
//string _ansprechpartnerFirma = "";
bool _isBesucher = false;
List<string> comboList = new List<string>() { "Grün", "Rot", "Gerätewagen" };
List<string> comboListNurRot = new List<string>() { "Rot" };
List<string> mitarbeiterList = new List<string>();
List<string> telList = new List<string>();
byte[] _signature = null;
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();
Helper.InitSerial();
Helper.DataReceived += Helper_DataReceived;
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("["))
{
if(tbUser.SelectedIndex == -1) tbUser.Text = user;
try
{
if (user != "")
tbTelnr.Text = telnr;
//tbTelnr.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM {MainWindow.table}.firmen WHERE Name='{user}'");
}
catch (Exception)
{
}
}
else
{
tbUser.Text = user.Split(',')[1].TrimEnd(']').Trim();
tbTelnr.Text = SQL.ReadSingleValue($"SELECT TelNr FROM {MainWindow.table}.family WHERE Name='{tbUser.Text}'");
cbColor.SelectedIndex = 0;
tbNummer.Focus();
}
}
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 (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 (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
{
try
{
var sig = new Signature(Signature.DisclaimerType.Rot, tbUser.Text, tbTelnr.Text);
if (sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
if (_signature != null)
{
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);
ResetValues();
this.Close();
}
else MessageBox.Show("Unterschrift nicht gefunden\nVorgang bitte wiederholen");
}
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
if (MessageBox.Show(this, "Beim verknüpfen der Karte ist ein Fehler aufgetreten\n\nMöchten Sie die interne Fehlermeldung anzeigen?", "Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.No) == MessageBoxResult.Yes)
MessageBox.Show(this, $"Fehlermeldung:\n\n{ex.Message}", "Fehlermeldung", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
}
private void ResetValues()
{
tbNummer.Text = "";
tbTelnr.Text = "";
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Helper.CheckWindowIsInScreenSpace(this);
}
private void Window_LocationChanged(object sender, EventArgs e)
{
Helper.CheckWindowIsInScreenSpace(this);
}
}
}