using System; using System.Collections.ObjectModel; using System.Linq; 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 { private readonly User _benutzer; private readonly IZeiterfassungsRepository _repository; private readonly string aktuellerBenutzername; [ObservableProperty] private ObservableCollection eintraege = new(); [ObservableProperty] private string? statusText; public bool HatKeineEintraege => Eintraege.Count == 0; partial void OnEintraegeChanged(ObservableCollection? oldValue, ObservableCollection newValue) { OnPropertyChanged(nameof(HatKeineEintraege)); } public EmployeeTasksViewModel(User benutzer, IZeiterfassungsRepository repository) { _benutzer = benutzer; _repository = repository; aktuellerBenutzername = benutzer.Username; Console.WriteLine($"[DEBUG] ViewModel erstellt für Benutzer: {aktuellerBenutzername}"); _ = LadeEintraegeAsync(); // Lade Daten automatisch beim Öffnen } [RelayCommand] public async Task LadeEintraegeAsync() { var eintraegeAusDb = await _repository.GetEintraegeFuerMitarbeiterAsync(aktuellerBenutzername); var offene = eintraegeAusDb .Where(e => !e.Erledigt) .OrderBy(e => e.Endzeit) .ToList(); // 🔔 Setze Markierung für geänderte Aufgaben foreach (var eintrag in offene) { eintrag.WurdeSeitLoginBearbeitet = eintrag.LetzteBearbeitung > _benutzer.LetzterLogin; // 🔍 Debug-Ausgabe zur Prüfung Console.WriteLine($"[DEBUG] Eintrag {eintrag.Id}: Endzeit={eintrag.Endzeit}, LetzteBearbeitung={eintrag.LetzteBearbeitung}, LetzterLogin={_benutzer.LetzterLogin}, Markiert={eintrag.WurdeSeitLoginBearbeitet}"); } if (offene.Any(e => e.WurdeSeitLoginBearbeitet)) StatusText = "📢 Es wurden Aufgaben seit Ihrem letzten Login geändert."; Eintraege = new ObservableCollection(offene); } [RelayCommand] public async Task SpeichereEintraegeAsync() { foreach (var eintrag in Eintraege) { await _repository.UpdateStatusUndKommentarAsync( eintrag.Id, eintrag.Erledigt, eintrag.MitarbeiterKommentar ); } StatusText = "✅ Änderungen gespeichert."; await LadeEintraegeAsync(); // automatisch neu laden } } }