ChronoFlow/ChronoFlow.View/Admin/AdminMainView.axaml.cs
2025-06-28 14:27:18 +02:00

110 lines
3.5 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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