ChronoFlow/ChronoFlow.View/Admin/AdminMainView.axaml.cs

107 lines
3.2 KiB
C#

using System;
using System.Collections.ObjectModel;
using Avalonia.Controls;
using Avalonia.Interactivity;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
namespace ChronoFlow.View.Admin
{
public partial class AdminMainView : UserControl
{
private readonly ViewManager _viewManager;
private readonly ObservableCollection<Zeiteintrag> _letzteProjekte = new();
public AdminMainView() : this(new ViewManager(new ContentControl()))
{
Console.WriteLine("⚠ Achtung: Parameterloser Konstruktor genutzt (nur Standard-ViewManager).");
}
public AdminMainView(ViewManager viewManager)
{
InitializeComponent();
_viewManager = viewManager;
Console.WriteLine("✅ AdminMainView wird initialisiert.");
LadeLetzteProjekte();
}
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}");
}
}
private void MitarbeiterHinzufuegen_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("MitarbeiterHinzufuegen");
}
private void ProjektErstellen_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("ProjektErstellen");
}
private void Dashboard_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("AdminMain");
}
private void AlleProjekte_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("AlleProjekte");
}
private void MitarbeiterListe_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("MitarbeiterListe");
}
private void Einstellungen_Click(object sender, RoutedEventArgs e)
{
_viewManager.Show("Einstellungen");
}
private void TogglePane_Click(object sender, RoutedEventArgs e)
{
AdminPane.IsPaneOpen = !AdminPane.IsPaneOpen;
}
public void AktualisiereLetzteProjekte()
{
LadeLetzteProjekte();
}
private void AbgeschlosseneProjekte_Click(object? sender, RoutedEventArgs e)
{
_viewManager.Show("AbgeschlosseneProjekte");
}
}
}