using System.Collections.ObjectModel; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using ChronoFlow.Model; using ChronoFlow.Persistence; namespace ChronoFlow.ViewModels.Mitarbeiter { public partial class EmployeeTasksViewModel : ObservableObject { // Liste aller Zeiteinträge für den aktuell eingeloggten Mitarbeiter [ObservableProperty] private ObservableCollection eintraege = new(); // Ausgabe für Erfolg/Nachricht [ObservableProperty] private string? statusText; private readonly IZeiterfassungsRepository repository; private readonly string aktuellerBenutzername; // Konstruktor erhält Repository (z. B. SqliteZeiterfassungsService) + aktuellen Benutzernamen public EmployeeTasksViewModel(IZeiterfassungsRepository repository, string aktuellerBenutzername) { this.repository = repository; this.aktuellerBenutzername = aktuellerBenutzername; // Direkt beim Start laden _ = LadeEintraegeAsync(); } // Lädt alle Einträge für den Benutzer aus der Datenbank [RelayCommand] public async Task LadeEintraegeAsync() { var eintraegeAusDb = await repository.GetEintraegeFuerMitarbeiterAsync(aktuellerBenutzername); Eintraege = new ObservableCollection(eintraegeAusDb); StatusText = $"🔄 {Eintraege.Count} Einträge geladen."; } // Speichert Änderungen (Status + Kommentar) für alle sichtbaren Einträge [RelayCommand] public async Task SpeichereEintraegeAsync() { foreach (var eintrag in Eintraege) { await repository.UpdateStatusUndKommentarAsync(eintrag.Id, eintrag.Erledigt, eintrag.MitarbeiterKommentar); } StatusText = "✅ Änderungen gespeichert."; } } }