using System;
using System.Collections.ObjectModel;
using Avalonia.Controls;
using Avalonia.Interactivity;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
namespace ChronoFlow.View.Admin
{
///
/// Die Hauptansicht für Administratoren nach dem Login.
/// Zeigt die zuletzt bearbeiteten Projekte und Navigationsoptionen.
///
public partial class AdminMainView : UserControl
{
private readonly ViewManager _viewManager;
private readonly ObservableCollection _letzteProjekte = new();
///
/// Parameterloser Konstruktor (wird nur intern verwendet).
///
public AdminMainView() : this(new ViewManager(new ContentControl()))
{
Console.WriteLine("⚠ Achtung: Parameterloser Konstruktor genutzt (nur Standard-ViewManager).");
}
///
/// Konstruktor mit Übergabe des ViewManagers für Navigation.
///
public AdminMainView(ViewManager viewManager)
{
InitializeComponent();
_viewManager = viewManager;
Console.WriteLine("✅ AdminMainView wird initialisiert.");
LadeLetzteProjekte();
}
///
/// Holt die letzten 3 Projekte aus der Datenbank und zeigt sie an.
///
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");
}
///
/// Wird z. B. vom ProjektErstellenView aufgerufen, um die Liste neu zu laden.
///
public void AktualisiereLetzteProjekte()
{
LadeLetzteProjekte();
}
}
}