using Avalonia.Controls; using Avalonia.Interactivity; using ChronoFlow.Model; namespace ChronoFlow.View.Admin; /// /// Dialogfenster zur Bearbeitung von Mitarbeiterdaten. /// Der übergebene Benutzer kann geändert und anschließend zurückgegeben werden. /// public partial class MitarbeiterBearbeitenDialog : Window { /// /// Rückgabe des aktualisierten Benutzers nach Speichern. /// public User UpdatedUser { get; private set; } /// /// Gibt an, ob das Passwort dieses Benutzers zurückgesetzt wurde. /// Wird extern aufgerufen und steuert die Anzeige des Hinweistexts. /// public bool PasswortWurdeZurueckgesetzt { set { if (value && this.FindControl("ResetHinweisText") is { } resetText) { resetText.IsVisible = true; } } } /// /// Öffentlicher, parameterloser Konstruktor. /// Wichtig für Avalonia zur Laufzeit, z.B. XAML-Loader (verhindert AVLN0005-Warnung). /// public MitarbeiterBearbeitenDialog() { InitializeComponent(); UpdatedUser = new User(); // Dummy-Initialisierung für Designer oder Avalonia-Runtime } /// /// Konstruktor mit Benutzerobjekt – lädt dessen Daten zur Bearbeitung. /// /// Benutzer, der bearbeitet werden soll public MitarbeiterBearbeitenDialog(User user) { InitializeComponent(); // Erstellen einer Kopie des Benutzers zur späteren Rückgabe UpdatedUser = new User { Username = user.Username, OriginalUsername = user.Username, // Originalname speichern für Update-Vergleich Abteilung = user.Abteilung, Mitarbeiternummer = user.Mitarbeiternummer }; // Felder in der Oberfläche vorausfüllen UsernameBox.Text = user.Username; AbteilungBox.Text = user.Abteilung; MitarbeiternummerBox.Text = user.Mitarbeiternummer; // Hinweistext zum Passwortreset initial ausblenden (nur zur Sicherheit) if (this.FindControl("ResetHinweisText") is { } resetText) { resetText.IsVisible = false; } } /// /// Wird ausgeführt, wenn auf „Speichern“ geklickt wird. /// Aktualisiert die Daten des Benutzers und schließt das Fenster mit Rückgabe. /// private void SpeichernButton_Click(object? sender, RoutedEventArgs e) { UpdatedUser.Username = UsernameBox.Text ?? UpdatedUser.Username; UpdatedUser.Abteilung = AbteilungBox.Text ?? UpdatedUser.Abteilung; UpdatedUser.Mitarbeiternummer = MitarbeiternummerBox.Text ?? UpdatedUser.Mitarbeiternummer; this.Close(UpdatedUser); } /// /// Wird ausgeführt, wenn auf „Abbrechen“ geklickt wird. /// Fenster wird geschlossen, ohne Änderungen zurückzugeben. /// private void AbbrechenButton_Click(object? sender, RoutedEventArgs e) { this.Close(null); } }