103 lines
3.7 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|