using System; using Avalonia.Controls; using Avalonia.Interactivity; using ChronoFlow.Model; using ChronoFlow.Persistence; namespace ChronoFlow.View.Admin; /// /// Dialogfenster zum Bearbeiten eines Projekts (Zeiteintrag). /// public partial class ProjektBearbeitenDialog : Window { /// /// Der bearbeitete Zeiteintrag, der beim Schließen zurückgegeben wird. /// public Zeiteintrag UpdatedProjekt { get; private set; } = new(); /// /// Öffentlicher parameterloser Konstruktor (z. B. für Design-Time oder XAML-Loader). /// public ProjektBearbeitenDialog() { InitializeComponent(); Console.WriteLine("⚠ Parameterloser Konstruktor verwendet. Achtung: Kein Projekt übergeben."); } /// /// Konstruktor – initialisiert das Fenster mit bestehenden Projektdaten. /// /// Das Projekt (Zeiteintrag), das bearbeitet wird. public ProjektBearbeitenDialog(Zeiteintrag projekt) { InitializeComponent(); var dbService = new SqliteZeiterfassungsService(); var mitarbeiter = dbService.LadeAlleMitarbeiterNamen(); MitarbeiterDropdown.ItemsSource = mitarbeiter; MitarbeiterDropdown.SelectedItem = projekt.Mitarbeiter; // Felder vorbelegen ProjektnameBox.Text = projekt.Projekt; KommentarBox.Text = projekt.Kommentar; StartzeitPicker.SelectedDate = new DateTimeOffset(projekt.Startzeit); EndzeitPicker.SelectedDate = new DateTimeOffset(projekt.Endzeit); // Referenz übernehmen UpdatedProjekt = projekt; } /// /// Übernimmt die Änderungen und schließt das Dialogfenster. /// private void SpeichernButton_Click(object? sender, RoutedEventArgs e) { UpdatedProjekt.Projekt = ProjektnameBox.Text ?? ""; UpdatedProjekt.Kommentar = KommentarBox.Text ?? ""; UpdatedProjekt.Startzeit = (StartzeitPicker.SelectedDate ?? DateTimeOffset.Now).DateTime; UpdatedProjekt.Endzeit = (EndzeitPicker.SelectedDate ?? DateTimeOffset.Now).DateTime; UpdatedProjekt.Mitarbeiter = MitarbeiterDropdown.SelectedItem?.ToString() ?? ""; Close(UpdatedProjekt); } /// /// Schließt den Dialog ohne Änderungen. /// private void AbbrechenButton_Click(object? sender, RoutedEventArgs e) { Close(null); } }