Project leader funciton

This commit is contained in:
Viperion 2025-06-28 20:12:56 +02:00
parent 88c5ed5484
commit d18df4600a
2 changed files with 150 additions and 118 deletions

View File

@ -36,11 +36,26 @@
<TextBlock Text="Projektleiter auswählen:" /> <TextBlock Text="Projektleiter auswählen:" />
<ComboBox x:Name="ProjektleiterDropdown" /> <ComboBox x:Name="ProjektleiterDropdown" />
<StackPanel>
<TextBlock Text="Mitarbeiter auswählen:" Margin="0,10,0,5" />
<!-- Mitarbeiter über Dropdown zuweisen --> <Expander Header=" Mitarbeitende auswählen" Background="#222" Foreground="White">
<TextBlock Text="Mitarbeiter auswählen:" /> <ListBox x:Name="MitarbeiterListBox"
<ComboBox x:Name="MitarbeiterDropdown" /> SelectionMode="Multiple"
Height="250"
MinWidth="300"
BorderBrush="Gray"
BorderThickness="1"
Background="#333"
Foreground="White"
ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Padding="4" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</StackPanel>
<!-- Kommentarbereich --> <!-- Kommentarbereich -->
<TextBlock Text="Kommentar:" /> <TextBlock Text="Kommentar:" />

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Media; using Avalonia.Media;
@ -31,49 +32,59 @@ public partial class ProjektErstellenView : UserControl
var dbService = new SqliteZeiterfassungsService(); var dbService = new SqliteZeiterfassungsService();
List<string> mitarbeiter = dbService.LadeAlleMitarbeiterNamen(); List<string> mitarbeiter = dbService.LadeAlleMitarbeiterNamen();
MitarbeiterDropdown.ItemsSource = mitarbeiter; // 🔍 Konsolenausgabe zur Kontrolle
ProjektleiterDropdown.ItemsSource = mitarbeiter; 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) catch (Exception ex)
{ {
Console.WriteLine($"❌ Fehler beim Laden der Mitarbeiterauswahl: {ex.Message}"); 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.Foreground = Brushes.Red;
FeedbackText.IsVisible = true; FeedbackText.IsVisible = true;
} }
} }
private void SpeichernButton_Click(object? sender, RoutedEventArgs e) private void SpeichernButton_Click(object? sender, RoutedEventArgs e)
{ {
FeedbackText.IsVisible = false;
string projektname = ProjektnameBox.Text ?? ""; string projektname = ProjektnameBox.Text ?? "";
DateTime startdatum = StartdatumPicker.SelectedDate?.Date ?? DateTime.Today; DateTime startdatum = StartdatumPicker.SelectedDate?.Date ?? DateTime.Today;
DateTime enddatum = EnddatumPicker.SelectedDate?.Date ?? DateTime.Today; DateTime enddatum = EnddatumPicker.SelectedDate?.Date ?? DateTime.Today;
string startzeitText = StartzeitBox.Text ?? "00:00"; string startzeitText = StartzeitBox.Text ?? "00:00";
string endzeitText = EndzeitBox.Text ?? "00:00"; string endzeitText = EndzeitBox.Text ?? "00:00";
string mitarbeiter = MitarbeiterDropdown.SelectedItem?.ToString() ?? "";
string kommentar = KommentarBox.Text ?? ""; string kommentar = KommentarBox.Text ?? "";
string projektleiter = ProjektleiterDropdown.SelectedItem?.ToString() ?? ""; string projektleiter = ProjektleiterDropdown.SelectedItem?.ToString() ?? "";
// 🛑 Pflichtfeldprüfung var ausgewaehlteMitarbeiter = MitarbeiterListBox?.SelectedItems?.Cast<string>().ToList() ?? new List<string>();
if (string.IsNullOrWhiteSpace(projektname) || string.IsNullOrWhiteSpace(mitarbeiter) || string.IsNullOrWhiteSpace(projektleiter))
if (string.IsNullOrWhiteSpace(projektname) || ausgewaehlteMitarbeiter.Count == 0 || string.IsNullOrWhiteSpace(projektleiter))
{ {
FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen (Projektname, Mitarbeiter, Projektleiter)!"; FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen (Projektname, mindestens ein Mitarbeiter, Projektleiter)!";
FeedbackText.Foreground = Brushes.Red; FeedbackText.Foreground = Brushes.Red;
FeedbackText.IsVisible = true; FeedbackText.IsVisible = true;
return; return;
} }
if (!TimeSpan.TryParse(startzeitText, out var startzeit)) if (!TimeSpan.TryParse(startzeitText, out var startzeit) || !TimeSpan.TryParse(endzeitText, out var endzeit))
{ {
FeedbackText.Text = "⚠ Ungültige Startzeit (Format HH:mm)!"; FeedbackText.Text = "⚠ Ungültige Zeitangaben (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.Foreground = Brushes.Red;
FeedbackText.IsVisible = true; FeedbackText.IsVisible = true;
return; return;
@ -85,9 +96,12 @@ public partial class ProjektErstellenView : UserControl
try try
{ {
var dbService = new SqliteZeiterfassungsService(); var dbService = new SqliteZeiterfassungsService();
foreach (var einzelnerMitarbeiter in ausgewaehlteMitarbeiter)
{
dbService.SpeichereEintrag(new Zeiteintrag dbService.SpeichereEintrag(new Zeiteintrag
{ {
Mitarbeiter = mitarbeiter, Mitarbeiter = einzelnerMitarbeiter,
Projekt = projektname, Projekt = projektname,
Startzeit = startDateTime, Startzeit = startDateTime,
Endzeit = endDateTime, Endzeit = endDateTime,
@ -95,27 +109,25 @@ public partial class ProjektErstellenView : UserControl
Projektleiter = projektleiter, Projektleiter = projektleiter,
Erledigt = false Erledigt = false
}); });
}
FeedbackText.Text = "✅ Projekt erfolgreich gespeichert."; FeedbackText.Text = "✅ Projekt erfolgreich gespeichert.";
FeedbackText.Foreground = Brushes.Green; FeedbackText.Foreground = Brushes.Green;
FeedbackText.IsVisible = true; FeedbackText.IsVisible = true;
// Felder leeren
ProjektnameBox.Text = ""; ProjektnameBox.Text = "";
KommentarBox.Text = ""; KommentarBox.Text = "";
StartdatumPicker.SelectedDate = DateTime.Today; StartdatumPicker.SelectedDate = DateTime.Today;
EnddatumPicker.SelectedDate = DateTime.Today; EnddatumPicker.SelectedDate = DateTime.Today;
StartzeitBox.Text = "09:00"; StartzeitBox.Text = "09:00";
EndzeitBox.Text = "17:00"; EndzeitBox.Text = "17:00";
MitarbeiterDropdown.SelectedItem = null; MitarbeiterListBox.SelectedItems?.Clear();
MitarbeiterListBox.SelectedIndex = -1;
ProjektleiterDropdown.SelectedItem = null; ProjektleiterDropdown.SelectedItem = null;
// Ansicht aktualisieren
if (_viewManager.TryGetView<AdminMainView>("AdminMain", out var adminView) && adminView != null) if (_viewManager.TryGetView<AdminMainView>("AdminMain", out var adminView) && adminView != null)
{
adminView.AktualisiereLetzteProjekte(); adminView.AktualisiereLetzteProjekte();
} }
}
catch (Exception ex) catch (Exception ex)
{ {
FeedbackText.Text = $"❌ Fehler beim Speichern: {ex.Message}"; FeedbackText.Text = $"❌ Fehler beim Speichern: {ex.Message}";
@ -124,18 +136,11 @@ public partial class ProjektErstellenView : UserControl
Console.WriteLine("❌ Ausnahme beim Speichern:"); Console.WriteLine("❌ Ausnahme beim Speichern:");
Console.WriteLine(ex.ToString()); Console.WriteLine(ex.ToString());
} }
} }
private void DemoProjekteButton_Click(object? sender, RoutedEventArgs e) 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) if (ProjektleiterDropdown.SelectedItem is not string projektleiterName)
{ {
FeedbackText.Text = "❗ Bitte wähle auch einen Projektleiter für die Demo-Projekte."; FeedbackText.Text = "❗ Bitte wähle auch einen Projektleiter für die Demo-Projekte.";
@ -144,9 +149,20 @@ public partial class ProjektErstellenView : UserControl
return; 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 service = new SqliteZeiterfassungsService();
var heute = DateTime.Today; var heute = DateTime.Today;
var mitarbeiter = MitarbeiterListBox?.SelectedItems?.Cast<string>().ToList() ?? new List<string>();
foreach (var name in mitarbeiter)
{
var projekte = new List<Zeiteintrag> var projekte = new List<Zeiteintrag>
{ {
new() new()
@ -155,7 +171,7 @@ public partial class ProjektErstellenView : UserControl
Kommentar = "✅ Deadline in mehr als 7 Tagen.", Kommentar = "✅ Deadline in mehr als 7 Tagen.",
Startzeit = heute.AddDays(-1).AddHours(9), Startzeit = heute.AddDays(-1).AddHours(9),
Endzeit = heute.AddDays(10).AddHours(17), Endzeit = heute.AddDays(10).AddHours(17),
Mitarbeiter = mitarbeiterName, Mitarbeiter = name,
Projektleiter = projektleiterName, Projektleiter = projektleiterName,
Erledigt = false Erledigt = false
}, },
@ -165,7 +181,7 @@ public partial class ProjektErstellenView : UserControl
Kommentar = "🟡 Deadline in 37 Tagen.", Kommentar = "🟡 Deadline in 37 Tagen.",
Startzeit = heute.AddDays(-1).AddHours(9), Startzeit = heute.AddDays(-1).AddHours(9),
Endzeit = heute.AddDays(5).AddHours(17), Endzeit = heute.AddDays(5).AddHours(17),
Mitarbeiter = mitarbeiterName, Mitarbeiter = name,
Projektleiter = projektleiterName, Projektleiter = projektleiterName,
Erledigt = false Erledigt = false
}, },
@ -175,7 +191,7 @@ public partial class ProjektErstellenView : UserControl
Kommentar = "🔴 Deadline in weniger als 3 Tagen.", Kommentar = "🔴 Deadline in weniger als 3 Tagen.",
Startzeit = heute.AddDays(-1).AddHours(9), Startzeit = heute.AddDays(-1).AddHours(9),
Endzeit = heute.AddDays(1).AddHours(17), Endzeit = heute.AddDays(1).AddHours(17),
Mitarbeiter = mitarbeiterName, Mitarbeiter = name,
Projektleiter = projektleiterName, Projektleiter = projektleiterName,
Erledigt = false Erledigt = false
} }
@ -183,6 +199,7 @@ public partial class ProjektErstellenView : UserControl
foreach (var p in projekte) foreach (var p in projekte)
service.SpeichereEintrag(p); service.SpeichereEintrag(p);
}
FeedbackText.Text = "✔️ 3 Demo-Projekte wurden erfolgreich erstellt."; FeedbackText.Text = "✔️ 3 Demo-Projekte wurden erfolgreich erstellt.";
FeedbackText.Foreground = Brushes.Green; FeedbackText.Foreground = Brushes.Green;