diff --git a/ChronoFlow.View/Admin/ProjektErstellenView.axaml b/ChronoFlow.View/Admin/ProjektErstellenView.axaml
index b71adcd..1fb5f3e 100644
--- a/ChronoFlow.View/Admin/ProjektErstellenView.axaml
+++ b/ChronoFlow.View/Admin/ProjektErstellenView.axaml
@@ -35,13 +35,28 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ChronoFlow.View/Admin/ProjektErstellenView.axaml.cs b/ChronoFlow.View/Admin/ProjektErstellenView.axaml.cs
index a67084f..ca6baf0 100644
--- a/ChronoFlow.View/Admin/ProjektErstellenView.axaml.cs
+++ b/ChronoFlow.View/Admin/ProjektErstellenView.axaml.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Media;
@@ -31,63 +32,76 @@ public partial class ProjektErstellenView : UserControl
var dbService = new SqliteZeiterfassungsService();
List mitarbeiter = dbService.LadeAlleMitarbeiterNamen();
- MitarbeiterDropdown.ItemsSource = mitarbeiter;
- ProjektleiterDropdown.ItemsSource = mitarbeiter;
+ // 🔍 Konsolenausgabe zur Kontrolle
+ if (mitarbeiter is { Count: > 0 })
+ {
+ Console.WriteLine("✅ Mitarbeitende erfolgreich geladen:");
+ foreach (var name in mitarbeiter)
+ {
+ Console.WriteLine($"- {name}");
+ }
+ }
+ else
+ {
+ Console.WriteLine("⚠️ Achtung: Mitarbeitendenliste ist leer.");
+ }
+
+ // Items in GUI setzen
+ MitarbeiterListBox!.ItemsSource = mitarbeiter;
+ ProjektleiterDropdown!.ItemsSource = mitarbeiter;
}
catch (Exception ex)
{
Console.WriteLine($"❌ Fehler beim Laden der Mitarbeiterauswahl: {ex.Message}");
- FeedbackText.Text = "⚠ Fehler beim Laden der Mitarbeiter.";
+ FeedbackText!.Text = "⚠ Fehler beim Laden der Mitarbeiter.";
FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true;
}
}
+
private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
+{
+ FeedbackText.IsVisible = false;
+
+ 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 kommentar = KommentarBox.Text ?? "";
+ string projektleiter = ProjektleiterDropdown.SelectedItem?.ToString() ?? "";
+
+ var ausgewaehlteMitarbeiter = MitarbeiterListBox?.SelectedItems?.Cast().ToList() ?? new List();
+
+ if (string.IsNullOrWhiteSpace(projektname) || ausgewaehlteMitarbeiter.Count == 0 || string.IsNullOrWhiteSpace(projektleiter))
{
- 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 ?? "";
- string projektleiter = ProjektleiterDropdown.SelectedItem?.ToString() ?? "";
+ FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen (Projektname, mindestens ein Mitarbeiter, Projektleiter)!";
+ FeedbackText.Foreground = Brushes.Red;
+ FeedbackText.IsVisible = true;
+ return;
+ }
- // 🛑 Pflichtfeldprüfung
- if (string.IsNullOrWhiteSpace(projektname) || string.IsNullOrWhiteSpace(mitarbeiter) || string.IsNullOrWhiteSpace(projektleiter))
+ if (!TimeSpan.TryParse(startzeitText, out var startzeit) || !TimeSpan.TryParse(endzeitText, out var endzeit))
+ {
+ FeedbackText.Text = "⚠ Ungültige Zeitangaben (Format HH:mm)!";
+ FeedbackText.Foreground = Brushes.Red;
+ FeedbackText.IsVisible = true;
+ return;
+ }
+
+ DateTime startDateTime = startdatum + startzeit;
+ DateTime endDateTime = enddatum + endzeit;
+
+ try
+ {
+ var dbService = new SqliteZeiterfassungsService();
+
+ foreach (var einzelnerMitarbeiter in ausgewaehlteMitarbeiter)
{
- FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen (Projektname, Mitarbeiter, Projektleiter)!";
- 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;
-
- try
- {
- var dbService = new SqliteZeiterfassungsService();
dbService.SpeichereEintrag(new Zeiteintrag
{
- Mitarbeiter = mitarbeiter,
+ Mitarbeiter = einzelnerMitarbeiter,
Projekt = projektname,
Startzeit = startDateTime,
Endzeit = endDateTime,
@@ -95,47 +109,38 @@ public partial class ProjektErstellenView : UserControl
Projektleiter = projektleiter,
Erledigt = false
});
-
- FeedbackText.Text = "✅ Projekt erfolgreich gespeichert.";
- FeedbackText.Foreground = Brushes.Green;
- FeedbackText.IsVisible = true;
-
- // Felder leeren
- ProjektnameBox.Text = "";
- KommentarBox.Text = "";
- StartdatumPicker.SelectedDate = DateTime.Today;
- EnddatumPicker.SelectedDate = DateTime.Today;
- StartzeitBox.Text = "09:00";
- EndzeitBox.Text = "17:00";
- MitarbeiterDropdown.SelectedItem = null;
- ProjektleiterDropdown.SelectedItem = null;
-
- // Ansicht aktualisieren
- if (_viewManager.TryGetView("AdminMain", out var adminView) && adminView != null)
- {
- adminView.AktualisiereLetzteProjekte();
- }
- }
- catch (Exception ex)
- {
- FeedbackText.Text = $"❌ Fehler beim Speichern: {ex.Message}";
- FeedbackText.Foreground = Brushes.Red;
- FeedbackText.IsVisible = true;
- Console.WriteLine("❌ Ausnahme beim Speichern:");
- Console.WriteLine(ex.ToString());
}
+
+ FeedbackText.Text = "✅ Projekt erfolgreich gespeichert.";
+ FeedbackText.Foreground = Brushes.Green;
+ FeedbackText.IsVisible = true;
+
+ ProjektnameBox.Text = "";
+ KommentarBox.Text = "";
+ StartdatumPicker.SelectedDate = DateTime.Today;
+ EnddatumPicker.SelectedDate = DateTime.Today;
+ StartzeitBox.Text = "09:00";
+ EndzeitBox.Text = "17:00";
+ MitarbeiterListBox.SelectedItems?.Clear();
+ MitarbeiterListBox.SelectedIndex = -1;
+ ProjektleiterDropdown.SelectedItem = null;
+
+ if (_viewManager.TryGetView("AdminMain", out var adminView) && adminView != null)
+ adminView.AktualisiereLetzteProjekte();
}
+ catch (Exception ex)
+ {
+ FeedbackText.Text = $"❌ Fehler beim Speichern: {ex.Message}";
+ FeedbackText.Foreground = Brushes.Red;
+ FeedbackText.IsVisible = true;
+ Console.WriteLine("❌ Ausnahme beim Speichern:");
+ Console.WriteLine(ex.ToString());
+ }
+}
+
private void DemoProjekteButton_Click(object? sender, RoutedEventArgs e)
{
- if (MitarbeiterDropdown.SelectedItem is not string mitarbeiterName)
- {
- FeedbackText.Text = "❗ Bitte zuerst einen Mitarbeiter auswählen.";
- FeedbackText.Foreground = Brushes.Red;
- FeedbackText.IsVisible = true;
- return;
- }
-
if (ProjektleiterDropdown.SelectedItem is not string projektleiterName)
{
FeedbackText.Text = "❗ Bitte wähle auch einen Projektleiter für die Demo-Projekte.";
@@ -144,45 +149,57 @@ public partial class ProjektErstellenView : UserControl
return;
}
+ if (MitarbeiterListBox.SelectedItems?.Count == 0)
+ {
+ FeedbackText.Text = "❗ Bitte wähle mindestens einen Mitarbeiter für die Demo-Projekte.";
+ FeedbackText.Foreground = Brushes.Red;
+ FeedbackText.IsVisible = true;
+ return;
+ }
+
var service = new SqliteZeiterfassungsService();
var heute = DateTime.Today;
- var projekte = new List
+ var mitarbeiter = MitarbeiterListBox?.SelectedItems?.Cast().ToList() ?? new List();
+ foreach (var name in mitarbeiter)
{
- new()
+ var projekte = new List
{
- Projekt = "Demo: Langfristig (grün)",
- Kommentar = "✅ Deadline in mehr als 7 Tagen.",
- Startzeit = heute.AddDays(-1).AddHours(9),
- Endzeit = heute.AddDays(10).AddHours(17),
- Mitarbeiter = mitarbeiterName,
- Projektleiter = projektleiterName,
- Erledigt = false
- },
- new()
- {
- Projekt = "Demo: Mittel (Orange)",
- Kommentar = "🟡 Deadline in 3–7 Tagen.",
- Startzeit = heute.AddDays(-1).AddHours(9),
- Endzeit = heute.AddDays(5).AddHours(17),
- Mitarbeiter = mitarbeiterName,
- Projektleiter = projektleiterName,
- Erledigt = false
- },
- new()
- {
- Projekt = "Demo: Kurzfristig (rot)",
- Kommentar = "🔴 Deadline in weniger als 3 Tagen.",
- Startzeit = heute.AddDays(-1).AddHours(9),
- Endzeit = heute.AddDays(1).AddHours(17),
- Mitarbeiter = mitarbeiterName,
- Projektleiter = projektleiterName,
- Erledigt = false
- }
- };
+ new()
+ {
+ Projekt = "Demo: Langfristig (grün)",
+ Kommentar = "✅ Deadline in mehr als 7 Tagen.",
+ Startzeit = heute.AddDays(-1).AddHours(9),
+ Endzeit = heute.AddDays(10).AddHours(17),
+ Mitarbeiter = name,
+ Projektleiter = projektleiterName,
+ Erledigt = false
+ },
+ new()
+ {
+ Projekt = "Demo: Mittel (Orange)",
+ Kommentar = "🟡 Deadline in 3–7 Tagen.",
+ Startzeit = heute.AddDays(-1).AddHours(9),
+ Endzeit = heute.AddDays(5).AddHours(17),
+ Mitarbeiter = name,
+ Projektleiter = projektleiterName,
+ Erledigt = false
+ },
+ new()
+ {
+ Projekt = "Demo: Kurzfristig (rot)",
+ Kommentar = "🔴 Deadline in weniger als 3 Tagen.",
+ Startzeit = heute.AddDays(-1).AddHours(9),
+ Endzeit = heute.AddDays(1).AddHours(17),
+ Mitarbeiter = name,
+ Projektleiter = projektleiterName,
+ Erledigt = false
+ }
+ };
- foreach (var p in projekte)
- service.SpeichereEintrag(p);
+ foreach (var p in projekte)
+ service.SpeichereEintrag(p);
+ }
FeedbackText.Text = "✔️ 3 Demo-Projekte wurden erfolgreich erstellt.";
FeedbackText.Foreground = Brushes.Green;