54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
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<Zeiteintrag> 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<Zeiteintrag>(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.";
|
||
}
|
||
}
|
||
} |