110 lines
3.5 KiB
C#
110 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.ObjectModel;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using ChronoFlow.Model;
|
|
using ChronoFlow.Persistence;
|
|
|
|
namespace ChronoFlow.View.Admin
|
|
{
|
|
/// <summary>
|
|
/// Die Hauptansicht für Administratoren nach dem Login.
|
|
/// Zeigt die zuletzt bearbeiteten Projekte und Navigationsoptionen.
|
|
/// </summary>
|
|
public partial class AdminMainView : UserControl
|
|
{
|
|
private readonly ViewManager _viewManager;
|
|
private readonly ObservableCollection<Zeiteintrag> _letzteProjekte = new();
|
|
|
|
/// <summary>
|
|
/// Parameterloser Konstruktor (wird nur intern verwendet).
|
|
/// </summary>
|
|
public AdminMainView() : this(new ViewManager(new ContentControl()))
|
|
{
|
|
Console.WriteLine("⚠ Achtung: Parameterloser Konstruktor genutzt (nur Standard-ViewManager).");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Konstruktor mit Übergabe des ViewManagers für Navigation.
|
|
/// </summary>
|
|
public AdminMainView(ViewManager viewManager)
|
|
{
|
|
InitializeComponent();
|
|
_viewManager = viewManager;
|
|
|
|
Console.WriteLine("✅ AdminMainView wird initialisiert.");
|
|
LadeLetzteProjekte();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Holt die letzten 3 Projekte aus der Datenbank und zeigt sie an.
|
|
/// </summary>
|
|
private void LadeLetzteProjekte()
|
|
{
|
|
Console.WriteLine("🔄 Lade letzte Projekte...");
|
|
|
|
try
|
|
{
|
|
var dbService = new SqliteZeiterfassungsService();
|
|
var letzteAusDb = dbService.LadeLetzteProjekte(3);
|
|
|
|
_letzteProjekte.Clear();
|
|
foreach (var eintrag in letzteAusDb)
|
|
{
|
|
Console.WriteLine($"✅ Projekt geladen: {eintrag.Projekt} ({eintrag.Id})");
|
|
_letzteProjekte.Add(eintrag);
|
|
}
|
|
|
|
if (LetzteProjekteListe != null)
|
|
{
|
|
LetzteProjekteListe.ItemsSource = _letzteProjekte;
|
|
Console.WriteLine("✅ LetzteProjekteListe erfolgreich gebunden.");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("⚠ Warnung: LetzteProjekteListe ist null. Prüfe XAML-Bindung!");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"[ERROR] Fehler beim Laden der letzten Projekte: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
// 🔽 Navigation per Buttonklick
|
|
|
|
private void MitarbeiterHinzufuegen_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewManager.Show("MitarbeiterHinzufuegen");
|
|
}
|
|
|
|
private void ProjektErstellen_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewManager.Show("ProjektErstellen");
|
|
}
|
|
|
|
private void AlleProjekte_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewManager.Show("AlleProjekte");
|
|
}
|
|
|
|
private void MitarbeiterListe_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewManager.Show("MitarbeiterListe");
|
|
}
|
|
|
|
private void AbgeschlosseneProjekte_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
_viewManager.Show("AbgeschlosseneProjekte");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Wird z.B. vom ProjektErstellenView aufgerufen, um die Liste neu zu laden.
|
|
/// </summary>
|
|
public void AktualisiereLetzteProjekte()
|
|
{
|
|
LadeLetzteProjekte();
|
|
}
|
|
}
|
|
}
|