ChronoFlow/ChronoFlow.View/MitarbeiterHinzufuegenView.axaml.cs

90 lines
2.9 KiB
C#

using System;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
using ChronoFlow.Security;
namespace ChronoFlow.View
{
public partial class MitarbeiterHinzufuegenView : UserControl
{
public MitarbeiterHinzufuegenView()
{
InitializeComponent();
}
private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var service = new SqliteZeiterfassungsService();
string username = UsernameBox.Text?.Trim() ?? "";
string password = PasswordBox.Text?.Trim() ?? "";
string rolle = (RoleBox.SelectedItem as ComboBoxItem)?.Content?.ToString() ?? "";
string mitarbeiternummer = MitarbeiternummerBox.Text?.Trim() ?? "";
string abteilung = AbteilungBox.Text?.Trim() ?? "";
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(rolle))
{
FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen!";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
return;
}
var neuerBenutzer = new User
{
Username = username,
Password = PasswordHasher.HashPassword(password),
Role = rolle,
Mitarbeiternummer = mitarbeiternummer,
Abteilung = abteilung,
MussPasswortAendern = true
};
service.ErstelleNeuenBenutzer(neuerBenutzer);
FeedbackText.Text = "✅ Mitarbeiter erfolgreich gespeichert.";
FeedbackText.Foreground = Brushes.Green;
FeedbackText.IsVisible = true;
ClearFields();
}
catch (Exception ex)
{
FeedbackText.Text = $"❌ Fehler: {ex.Message}";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
Console.WriteLine("❌ Ausnahme beim Speichern:");
Console.WriteLine(ex.ToString());
}
}
private void ClearFields()
{
UsernameBox.Text = "";
PasswordBox.Text = "";
MitarbeiternummerBox.Text = "";
AbteilungBox.Text = "";
RoleBox.SelectedIndex = -1;
}
private void ZurueckZumDashboard_Click(object? sender, RoutedEventArgs e)
{
var mainWindow = this.VisualRoot as MainWindow;
if (mainWindow != null)
{
mainWindow.ShowAdminDashboard();
}
else
{
Console.WriteLine("⚠️ MainWindow nicht gefunden!");
}
}
}
}