78 lines
2.5 KiB
C#
78 lines
2.5 KiB
C#
using System;
|
||
using System.Collections.ObjectModel;
|
||
using Avalonia.Controls;
|
||
using ChronoFlow.Model;
|
||
using ChronoFlow.Persistence;
|
||
|
||
namespace ChronoFlow.View.Mitarbeiter;
|
||
|
||
/// <summary>
|
||
/// Hauptansicht für eingeloggte Mitarbeiter – zeigt zuletzt bearbeitete Projekte und Benachrichtigungen.
|
||
/// </summary>
|
||
public partial class MitarbeiterMainView : UserControl
|
||
{
|
||
private readonly ViewManager _viewManager;
|
||
private readonly User _currentUser;
|
||
private readonly ObservableCollection<Zeiteintrag> _letzteProjekte = new();
|
||
private readonly ObservableCollection<string> _notifications = new();
|
||
|
||
/// <summary>
|
||
/// Öffentlicher, parameterloser Konstruktor – erforderlich für Avalonia Runtime Loader (z. B. Designer).
|
||
/// Startet mit Dummy-Werten.
|
||
/// </summary>
|
||
public MitarbeiterMainView()
|
||
: this(new ViewManager(new ContentControl()), new User { Username = "Demo", Role = "Mitarbeiter" })
|
||
{
|
||
Console.WriteLine("⚠️ MitarbeiterMainView im Demo-Modus geladen.");
|
||
}
|
||
|
||
/// <summary>
|
||
/// Konstruktor mit ViewManager und eingeloggtem Benutzer.
|
||
/// </summary>
|
||
/// <param name="viewManager">Instanz zur Navigation</param>
|
||
/// <param name="user">Eingeloggter Benutzer (Mitarbeiter)</param>
|
||
public MitarbeiterMainView(ViewManager viewManager, User user)
|
||
{
|
||
InitializeComponent();
|
||
|
||
_viewManager = viewManager;
|
||
_currentUser = user;
|
||
|
||
// Datenquellen binden
|
||
LetzteProjekteListe.ItemsSource = _letzteProjekte;
|
||
NotificationList.ItemsSource = _notifications;
|
||
|
||
// Daten laden
|
||
LadeLetzteProjekte();
|
||
LadeBenachrichtigungen();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Lädt die letzten 3 Projekte, die vom aktuellen Benutzer bearbeitet wurden.
|
||
/// </summary>
|
||
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);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Lädt Benachrichtigungen für den Benutzer (derzeit Platzhalter).
|
||
/// </summary>
|
||
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.");
|
||
}
|
||
}
|