72 lines
2.5 KiB
C#
72 lines
2.5 KiB
C#
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);
|
||
}
|
||
}
|