94 lines
3.1 KiB
C#
94 lines
3.1 KiB
C#
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);
|
||
}
|
||
}
|