using Avalonia.Controls; using Avalonia.Interactivity; using ChronoFlow.Model; using ChronoFlow.Security; namespace ChronoFlow.View.Admin; /// /// Dialogfenster zur Bearbeitung eines Mitarbeiters durch den Admin. /// Enthält Eingabefelder für Name, Abteilung, Nummer und optional Passwort-Reset. /// public partial class MitarbeiterBearbeitenDialog : Window { /// /// Benutzerobjekt mit den aktualisierten Werten, wird beim Schließen zurückgegeben. /// public User UpdatedUser { get; private set; } /// /// Konstruktor – befüllt die UI mit den bestehenden Benutzerwerten. /// /// Der zu bearbeitende Benutzer 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; } /// /// Wird ausgeführt, wenn der Admin auf „Speichern“ klickt. /// Änderungen werden übernommen und ggf. Passwort zurückgesetzt. /// 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); } /// /// Wird ausgeführt, wenn der Admin den Dialog ohne Änderungen verlässt. /// private void AbbrechenButton_Click(object? sender, RoutedEventArgs e) { this.Close(null); } }