ChronoFlow/ChronoFlow.View/Admin/MitarbeiterBearbeitenDialog.axaml.cs

72 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Avalonia.Controls;
using Avalonia.Interactivity;
using ChronoFlow.Model;
using ChronoFlow.Security;
namespace ChronoFlow.View.Admin;
/// <summary>
/// Dialogfenster zur Bearbeitung eines Mitarbeiters durch den Admin.
/// Enthält Eingabefelder für Name, Abteilung, Nummer und optional Passwort-Reset.
/// </summary>
public partial class MitarbeiterBearbeitenDialog : Window
{
/// <summary>
/// Benutzerobjekt mit den aktualisierten Werten, wird beim Schließen zurückgegeben.
/// </summary>
public User UpdatedUser { get; private set; }
/// <summary>
/// Konstruktor befüllt die UI mit den bestehenden Benutzerwerten.
/// </summary>
/// <param name="user">Der zu bearbeitende Benutzer</param>
public MitarbeiterBearbeitenDialog(User user)
{
InitializeComponent();
// Erzeuge eine Kopie mit übertragbaren Werten
UpdatedUser = new User
{
Username = user.Username,
OriginalUsername = user.Username, // für Identifikation bei Änderungen
Abteilung = user.Abteilung,
Mitarbeiternummer = user.Mitarbeiternummer
};
// Setze UI-Felder
UsernameBox.Text = user.Username;
AbteilungBox.Text = user.Abteilung;
MitarbeiternummerBox.Text = user.Mitarbeiternummer;
}
/// <summary>
/// Wird ausgeführt, wenn der Admin auf „Speichern“ klickt.
/// Änderungen werden übernommen und ggf. Passwort zurückgesetzt.
/// </summary>
private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
{
// Aktualisiere Werte aus der Eingabe
UpdatedUser.Username = UsernameBox.Text ?? UpdatedUser.Username;
UpdatedUser.Abteilung = AbteilungBox.Text ?? UpdatedUser.Abteilung;
UpdatedUser.Mitarbeiternummer = MitarbeiternummerBox.Text ?? UpdatedUser.Mitarbeiternummer;
// Falls Passwort zurückgesetzt werden soll
if (ResetPasswordCheckbox.IsChecked == true)
{
UpdatedUser.Password = PasswordHasher.HashPassword("newpassword");
UpdatedUser.MussPasswortAendern = true; // Benutzer muss neues Passwort setzen
}
// Schließe Fenster und übergebe aktualisierten Benutzer
this.Close(UpdatedUser);
}
/// <summary>
/// Wird ausgeführt, wenn der Admin den Dialog ohne Änderungen verlässt.
/// </summary>
private void AbbrechenButton_Click(object? sender, RoutedEventArgs e)
{
this.Close(null);
}
}