ChronoFlow/ChronoFlow.View/Mitarbeiter/MitarbeiterMainView.axaml.cs
2025-06-29 17:50:02 +02:00

78 lines
2.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. 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 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.");
}
}