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);
}
}