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