using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Linq; namespace StempelClient; /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { #region MitarbeiterArray private string[] Mitarbeiter = new string[6] { "Tim Grafe", "Julian Kotthoff", "Laurenz Appel", "David Oppermann", "Isaiah Trox", "Joline Elizabeth Panagiotaris" }; private Dictionary MitarbeiterMapping; #endregion #region Main public MainWindow() { InitializeComponent(); // Verwende das PIN-Array aus der PinPanel-Klasse zum Erstellen des Mappings. MitarbeiterMapping = Mitarbeiter.Zip(PinPanel.MitarbeiterPin, (name, pin) => new { name, pin }) .ToDictionary(x => x.name, x => x.pin); // Das Eingabefeld "Kürzel" bleibt zunächst leer. } #endregion #region Kürzel aus Namen generieren private string AutoFillKuerzel(string fullName) { if (string.IsNullOrWhiteSpace(fullName)) return string.Empty; var parts = fullName.Split(' ', System.StringSplitOptions.RemoveEmptyEntries); string initials = string.Empty; if (parts.Length >= 1 && parts[0].Length > 0) initials += parts[0][0]; if (parts.Length >= 2 && parts[1].Length > 0) initials += parts[1][0]; if (parts.Length >= 3 && parts[2].Length > 0) initials += parts[2][0]; return initials.ToUpper(); } #endregion #region LetterButtonClickFunction private async void LetterButton_Click(object sender, RoutedEventArgs e) { if (sender is Button btn) { if (!btn.Background.Equals(Brushes.Gray)) { var originalBackground = btn.Background; btn.Background = Brushes.Gray; await Task.Delay(50); btn.Background = originalBackground; } string letter = btn.Content.ToString().ToUpper(); if (KuerzelTextBox != null) { if (KuerzelTextBox.Text.Length < 3) { KuerzelTextBox.Text += letter; } else if (letter != "↵") { MessageBox.Show("Fehler: Es dürfen nur drei Buchstaben eingegeben werden!", "Eingabefehler", MessageBoxButton.OK, MessageBoxImage.Error); } } } } #endregion #region EnterButtonFunction private void EnterButton_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(KuerzelTextBox.Text)) { MessageBox.Show("Fehler: Bitte geben Sie ein Kürzel ein!", "Eingabefehler", MessageBoxButton.OK, MessageBoxImage.Error); return; } string eingabe = KuerzelTextBox.Text.ToUpper(); string matchedEmployee = null; foreach (var mitarbeiter in Mitarbeiter) { string kurz = AutoFillKuerzel(mitarbeiter); if (kurz == eingabe) { matchedEmployee = mitarbeiter; break; } } if (matchedEmployee == null) { MessageBox.Show("Fehler: Das eingetippte Kürzel stimmt mit keinem Mitarbeiter überein!", "Eingabefehler", MessageBoxButton.OK, MessageBoxImage.Error); } else { // Erwartete PIN aus der Mapping holen und in int umwandeln string expectedPinStr = MitarbeiterMapping[matchedEmployee]; if (!int.TryParse(expectedPinStr, out int expectedPin)) { MessageBox.Show("Fehler: Die PIN des Mitarbeiters ist ungültig!", "Eingabefehler", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Erstelle eine Instanz des PinPanel und weise die erwartete PIN zu PinPanel pinPage = new PinPanel(); pinPage.ExpectedPin = expectedPin; NavigationWindow navWindow = new NavigationWindow(); navWindow.Navigate(pinPage); navWindow.Title = "Pin Eingabe"; navWindow.Show(); this.Close(); } } #endregion #region WindowKeyDownFunction private void Window_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { EnterButton_Click(EnterButton, new RoutedEventArgs()); return; } var keyStr = e.Key.ToString().ToUpper(); if (keyStr.Length == 1 && char.IsLetter(keyStr[0])) { foreach (var child in PinButtonsPanel.Children) { if (child is Button btn && btn.Content.ToString().ToUpper() == keyStr) { LetterButton_Click(btn, new RoutedEventArgs()); break; } } } if (e.Key == Key.Back) { KuerzelTextBox.Clear(); return; } if (e.Key == Key.Escape) { Application.Current.Shutdown(); return; } } #endregion #region TextBoxFunction private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { if (sender is TextBox tb) { string text = tb.Text.ToUpper(); if (text != tb.Text) { tb.Text = text; tb.CaretIndex = tb.Text.Length; } if (text.Length > 3) { MessageBox.Show("Fehler: Es dürfen nur drei Buchstaben eingegeben werden!", "Eingabefehler", MessageBoxButton.OK, MessageBoxImage.Error); tb.Text = text.Substring(0, 3); tb.CaretIndex = tb.Text.Length; } } } #endregion }