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();
|
||
}
|
||
}
|
||
}
|