86 lines
2.9 KiB
C#
86 lines
2.9 KiB
C#
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<Zeiteintrag> eintraege = new();
|
|
|
|
[ObservableProperty]
|
|
private string? statusText;
|
|
|
|
public bool HatKeineEintraege => Eintraege.Count == 0;
|
|
|
|
partial void OnEintraegeChanged(ObservableCollection<Zeiteintrag>? oldValue, ObservableCollection<Zeiteintrag> 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<Zeiteintrag>(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
|
|
}
|
|
}
|
|
}
|