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

74 lines
2.5 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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