74 lines
2.5 KiB
C#
74 lines
2.5 KiB
C#
using System;
|
||
using Avalonia.Controls;
|
||
using Avalonia.Interactivity;
|
||
using ChronoFlow.Model;
|
||
using ChronoFlow.Persistence;
|
||
|
||
namespace ChronoFlow.View.Admin;
|
||
|
||
/// <summary>
|
||
/// Dialogfenster zum Bearbeiten eines Projekts (Zeiteintrag).
|
||
/// </summary>
|
||
public partial class ProjektBearbeitenDialog : Window
|
||
{
|
||
/// <summary>
|
||
/// Der bearbeitete Zeiteintrag, der beim Schließen zurückgegeben wird.
|
||
/// </summary>
|
||
public Zeiteintrag UpdatedProjekt { get; private set; } = new();
|
||
|
||
/// <summary>
|
||
/// Öffentlicher parameterloser Konstruktor (z. B. für Design-Time oder XAML-Loader).
|
||
/// </summary>
|
||
public ProjektBearbeitenDialog()
|
||
{
|
||
InitializeComponent();
|
||
Console.WriteLine("⚠ Parameterloser Konstruktor verwendet. Achtung: Kein Projekt übergeben.");
|
||
}
|
||
|
||
/// <summary>
|
||
/// Konstruktor – initialisiert das Fenster mit bestehenden Projektdaten.
|
||
/// </summary>
|
||
/// <param name="projekt">Das Projekt (Zeiteintrag), das bearbeitet wird.</param>
|
||
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;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Übernimmt die Änderungen und schließt das Dialogfenster.
|
||
/// </summary>
|
||
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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Schließt den Dialog ohne Änderungen.
|
||
/// </summary>
|
||
private void AbbrechenButton_Click(object? sender, RoutedEventArgs e)
|
||
{
|
||
Close(null);
|
||
}
|
||
}
|