ChronoFlow/ChronoFlow.View/Admin/MitarbeiterBearbeitenDialog.axaml.cs
2025-06-28 14:27:18 +02:00

94 lines
3.1 KiB
C#
Raw Permalink 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;
namespace ChronoFlow.View.Admin;
/// <summary>
/// Dialogfenster zur Bearbeitung von Mitarbeiterdaten.
/// Der übergebene Benutzer kann geändert und anschließend zurückgegeben werden.
/// </summary>
public partial class MitarbeiterBearbeitenDialog : Window
{
/// <summary>
/// Rückgabe des aktualisierten Benutzers nach Speichern.
/// </summary>
public User UpdatedUser { get; private set; }
/// <summary>
/// Gibt an, ob das Passwort dieses Benutzers zurückgesetzt wurde.
/// Wird extern aufgerufen und steuert die Anzeige des Hinweistexts.
/// </summary>
public bool PasswortWurdeZurueckgesetzt
{
set
{
if (value && this.FindControl<TextBlock>("ResetHinweisText") is { } resetText)
{
resetText.IsVisible = true;
}
}
}
/// <summary>
/// Öffentlicher, parameterloser Konstruktor.
/// Wichtig für Avalonia zur Laufzeit, z.B. XAML-Loader (verhindert AVLN0005-Warnung).
/// </summary>
public MitarbeiterBearbeitenDialog()
{
InitializeComponent();
UpdatedUser = new User(); // Dummy-Initialisierung für Designer oder Avalonia-Runtime
}
/// <summary>
/// Konstruktor mit Benutzerobjekt lädt dessen Daten zur Bearbeitung.
/// </summary>
/// <param name="user">Benutzer, der bearbeitet werden soll</param>
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<TextBlock>("ResetHinweisText") is { } resetText)
{
resetText.IsVisible = false;
}
}
/// <summary>
/// Wird ausgeführt, wenn auf „Speichern“ geklickt wird.
/// Aktualisiert die Daten des Benutzers und schließt das Fenster mit Rückgabe.
/// </summary>
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);
}
/// <summary>
/// Wird ausgeführt, wenn auf „Abbrechen“ geklickt wird.
/// Fenster wird geschlossen, ohne Änderungen zurückzugeben.
/// </summary>
private void AbbrechenButton_Click(object? sender, RoutedEventArgs e)
{
this.Close(null);
}
}