using System;
using System.Collections.ObjectModel;
using Avalonia.Controls;
using ChronoFlow.Model;
using ChronoFlow.Persistence;
namespace ChronoFlow.View.Mitarbeiter;
///
/// Hauptansicht für eingeloggte Mitarbeiter – zeigt zuletzt bearbeitete Projekte und Benachrichtigungen.
///
public partial class MitarbeiterMainView : UserControl
{
private readonly ViewManager _viewManager;
private readonly User _currentUser;
private readonly ObservableCollection _letzteProjekte = new();
private readonly ObservableCollection _notifications = new();
///
/// Öffentlicher, parameterloser Konstruktor – erforderlich für Avalonia Runtime Loader (z.B. Designer).
/// Startet mit Dummy-Werten.
///
public MitarbeiterMainView()
: this(new ViewManager(new ContentControl()), new User { Username = "Demo", Role = "Mitarbeiter" })
{
Console.WriteLine("⚠️ MitarbeiterMainView im Demo-Modus geladen.");
}
///
/// Konstruktor mit ViewManager und eingeloggtem Benutzer.
///
/// Instanz zur Navigation
/// Eingeloggter Benutzer (Mitarbeiter)
public MitarbeiterMainView(ViewManager viewManager, User user)
{
InitializeComponent();
_viewManager = viewManager;
_currentUser = user;
// Datenquellen binden
LetzteProjekteListe.ItemsSource = _letzteProjekte;
NotificationList.ItemsSource = _notifications;
// Daten laden
LadeLetzteProjekte();
LadeBenachrichtigungen();
}
///
/// Lädt die letzten 3 Projekte, die vom aktuellen Benutzer bearbeitet wurden.
///
private void LadeLetzteProjekte()
{
var dbService = new SqliteZeiterfassungsService();
var projekte = dbService.LadeLetzteProjekte(3);
_letzteProjekte.Clear();
foreach (var p in projekte)
{
if (p.Mitarbeiter == _currentUser.Username)
_letzteProjekte.Add(p);
}
}
///
/// Lädt Benachrichtigungen für den Benutzer (derzeit Platzhalter).
///
private void LadeBenachrichtigungen()
{
_notifications.Clear();
// 📌 Hier später echte Änderungsinfos anzeigen
_notifications.Add("Projekt Alpha wurde aktualisiert.");
_notifications.Add("Deadline für Projekt Beta wurde verschoben.");
}
}