Project leader funciton
This commit is contained in:
parent
88c5ed5484
commit
d18df4600a
@ -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:" />
|
||||||
|
|||||||
@ -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,63 +32,76 @@ 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 ?? "";
|
||||||
|
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<string>().ToList() ?? new List<string>();
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(projektname) || ausgewaehlteMitarbeiter.Count == 0 || string.IsNullOrWhiteSpace(projektleiter))
|
||||||
{
|
{
|
||||||
string projektname = ProjektnameBox.Text ?? "";
|
FeedbackText.Text = "⚠ Bitte alle Pflichtfelder ausfüllen (Projektname, mindestens ein Mitarbeiter, Projektleiter)!";
|
||||||
DateTime startdatum = StartdatumPicker.SelectedDate?.Date ?? DateTime.Today;
|
FeedbackText.Foreground = Brushes.Red;
|
||||||
DateTime enddatum = EnddatumPicker.SelectedDate?.Date ?? DateTime.Today;
|
FeedbackText.IsVisible = true;
|
||||||
string startzeitText = StartzeitBox.Text ?? "00:00";
|
return;
|
||||||
string endzeitText = EndzeitBox.Text ?? "00:00";
|
}
|
||||||
string mitarbeiter = MitarbeiterDropdown.SelectedItem?.ToString() ?? "";
|
|
||||||
string kommentar = KommentarBox.Text ?? "";
|
|
||||||
string projektleiter = ProjektleiterDropdown.SelectedItem?.ToString() ?? "";
|
|
||||||
|
|
||||||
// 🛑 Pflichtfeldprüfung
|
if (!TimeSpan.TryParse(startzeitText, out var startzeit) || !TimeSpan.TryParse(endzeitText, out var endzeit))
|
||||||
if (string.IsNullOrWhiteSpace(projektname) || string.IsNullOrWhiteSpace(mitarbeiter) || string.IsNullOrWhiteSpace(projektleiter))
|
{
|
||||||
|
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
|
dbService.SpeichereEintrag(new Zeiteintrag
|
||||||
{
|
{
|
||||||
Mitarbeiter = mitarbeiter,
|
Mitarbeiter = einzelnerMitarbeiter,
|
||||||
Projekt = projektname,
|
Projekt = projektname,
|
||||||
Startzeit = startDateTime,
|
Startzeit = startDateTime,
|
||||||
Endzeit = endDateTime,
|
Endzeit = endDateTime,
|
||||||
@ -95,47 +109,38 @@ public partial class ProjektErstellenView : UserControl
|
|||||||
Projektleiter = projektleiter,
|
Projektleiter = projektleiter,
|
||||||
Erledigt = false
|
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<AdminMainView>("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<AdminMainView>("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)
|
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,45 +149,57 @@ 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 projekte = new List<Zeiteintrag>
|
var mitarbeiter = MitarbeiterListBox?.SelectedItems?.Cast<string>().ToList() ?? new List<string>();
|
||||||
|
foreach (var name in mitarbeiter)
|
||||||
{
|
{
|
||||||
new()
|
var projekte = new List<Zeiteintrag>
|
||||||
{
|
{
|
||||||
Projekt = "Demo: Langfristig (grün)",
|
new()
|
||||||
Kommentar = "✅ Deadline in mehr als 7 Tagen.",
|
{
|
||||||
Startzeit = heute.AddDays(-1).AddHours(9),
|
Projekt = "Demo: Langfristig (grün)",
|
||||||
Endzeit = heute.AddDays(10).AddHours(17),
|
Kommentar = "✅ Deadline in mehr als 7 Tagen.",
|
||||||
Mitarbeiter = mitarbeiterName,
|
Startzeit = heute.AddDays(-1).AddHours(9),
|
||||||
Projektleiter = projektleiterName,
|
Endzeit = heute.AddDays(10).AddHours(17),
|
||||||
Erledigt = false
|
Mitarbeiter = name,
|
||||||
},
|
Projektleiter = projektleiterName,
|
||||||
new()
|
Erledigt = false
|
||||||
{
|
},
|
||||||
Projekt = "Demo: Mittel (Orange)",
|
new()
|
||||||
Kommentar = "🟡 Deadline in 3–7 Tagen.",
|
{
|
||||||
Startzeit = heute.AddDays(-1).AddHours(9),
|
Projekt = "Demo: Mittel (Orange)",
|
||||||
Endzeit = heute.AddDays(5).AddHours(17),
|
Kommentar = "🟡 Deadline in 3–7 Tagen.",
|
||||||
Mitarbeiter = mitarbeiterName,
|
Startzeit = heute.AddDays(-1).AddHours(9),
|
||||||
Projektleiter = projektleiterName,
|
Endzeit = heute.AddDays(5).AddHours(17),
|
||||||
Erledigt = false
|
Mitarbeiter = name,
|
||||||
},
|
Projektleiter = projektleiterName,
|
||||||
new()
|
Erledigt = false
|
||||||
{
|
},
|
||||||
Projekt = "Demo: Kurzfristig (rot)",
|
new()
|
||||||
Kommentar = "🔴 Deadline in weniger als 3 Tagen.",
|
{
|
||||||
Startzeit = heute.AddDays(-1).AddHours(9),
|
Projekt = "Demo: Kurzfristig (rot)",
|
||||||
Endzeit = heute.AddDays(1).AddHours(17),
|
Kommentar = "🔴 Deadline in weniger als 3 Tagen.",
|
||||||
Mitarbeiter = mitarbeiterName,
|
Startzeit = heute.AddDays(-1).AddHours(9),
|
||||||
Projektleiter = projektleiterName,
|
Endzeit = heute.AddDays(1).AddHours(17),
|
||||||
Erledigt = false
|
Mitarbeiter = name,
|
||||||
}
|
Projektleiter = projektleiterName,
|
||||||
};
|
Erledigt = false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user