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."); } }