ChronoFlow/ChronoFlow.View/Admin/ProjektErstellenView.axaml.cs
2025-06-12 13:41:27 +02:00

103 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
namespace ChronoFlow.View.Admin
{
public partial class ProjektErstellenView : UserControl
{
private readonly ViewManager _viewManager;
public ProjektErstellenView(ViewManager viewManager)
{
InitializeComponent();
_viewManager = viewManager;
var dbService = new SqliteZeiterfassungsService();
List<string> mitarbeiter = dbService.LadeAlleMitarbeiterNamen();
// ✅ Nur ItemsSource verwenden, nicht Items
MitarbeiterDropdown.ItemsSource = mitarbeiter;
}
private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
{
string projektname = ProjektnameBox.Text ?? "";
DateTime startdatum = StartdatumPicker.SelectedDate?.Date ?? DateTime.Today;
DateTime enddatum = EnddatumPicker.SelectedDate?.Date ?? DateTime.Today;
string startzeitText = StartzeitBox.Text ?? "00:00";
string endzeitText = EndzeitBox.Text ?? "00:00";
string mitarbeiter = MitarbeiterDropdown.SelectedItem?.ToString() ?? "";
string kommentar = KommentarBox.Text ?? "";
if (string.IsNullOrWhiteSpace(projektname) || string.IsNullOrWhiteSpace(mitarbeiter))
{
FeedbackText.Text = "⚠ Bitte Projektname und Mitarbeiter ausfüllen!";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
return;
}
if (!TimeSpan.TryParse(startzeitText, out var startzeit))
{
FeedbackText.Text = "⚠ Ungültige Startzeit (Format HH:mm)!";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
return;
}
if (!TimeSpan.TryParse(endzeitText, out var endzeit))
{
FeedbackText.Text = "⚠ Ungültige Endzeit (Format HH:mm)!";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
return;
}
DateTime startDateTime = startdatum + startzeit;
DateTime endDateTime = enddatum + endzeit;
var dbService = new SqliteZeiterfassungsService();
// 💡 Achtung: Aktuell speichern wir als Zeiteintrag (kein eigenes Projektmodell!)
dbService.SpeichereEintrag(new Zeiteintrag
{
Mitarbeiter = mitarbeiter,
Projekt = projektname,
Startzeit = startDateTime,
Endzeit = endDateTime,
Kommentar = kommentar,
Erledigt = false
});
FeedbackText.Text = "✅ Projekt erfolgreich gespeichert.";
FeedbackText.Foreground = Brushes.Green;
FeedbackText.IsVisible = true;
// Felder zurücksetzen
ProjektnameBox.Text = "";
KommentarBox.Text = "";
StartdatumPicker.SelectedDate = DateTime.Today;
EnddatumPicker.SelectedDate = DateTime.Today;
StartzeitBox.Text = "09:00";
EndzeitBox.Text = "17:00";
MitarbeiterDropdown.SelectedItem = null;
// 🔄 Dashboard aktualisieren, wenn zurück
if (_viewManager.TryGetView<AdminMainView>("AdminMain", out var adminView) && adminView != null)
{
adminView.AktualisiereLetzteProjekte();
}
}
private void ZurueckButton_Click(object? sender, RoutedEventArgs e)
{
_viewManager.Show("AdminMain");
}
}
}