Files
LehrerApp/LehrerApp.Desktop/Views/Workload/TimeTrackingView.axaml.cs
T
admin 709ea88c2a
CI / build-and-test (push) Canceled after 0s
Arbeitszeitnacherfassung
2026-09-06 13:51:17 +02:00

44 lines
1.8 KiB
C#

using Avalonia.Controls;
using LehrerApp.Core.Interfaces;
using LehrerApp.Core.Models;
using LehrerApp.Desktop.ViewModels.Workload;
using Microsoft.Extensions.DependencyInjection;
namespace LehrerApp.Desktop.Views.Workload;
public partial class TimeTrackingView : UserControl
{
public TimeTrackingView() => InitializeComponent();
protected override void OnDataContextChanged(EventArgs e)
{
base.OnDataContextChanged(e);
if (DataContext is TimeTrackingViewModel vm)
{
vm.OnAddEntry = () => ShowAddEntryDialog();
vm.OnSuggestTeachingTime = (start, end) => ShowAddEntryDialog(prefillCategory: "Unterricht",
prefillStart: start, prefillEnd: end);
vm.OnAddMissingTeachingTime = item => ShowAddEntryDialog(prefillCategory: "Unterricht",
prefillDate: item.Date, prefillStart: item.WindowStart, prefillEnd: item.WindowEnd);
}
}
private async Task<TimeEntry?> ShowAddEntryDialog(string? prefillCategory = null,
DateOnly? prefillDate = null, TimeOnly? prefillStart = null, TimeOnly? prefillEnd = null)
{
var owner = TopLevel.GetTopLevel(this) as Window;
if (owner is null) return null;
var tasks = App.Services.GetRequiredService<IWorkTaskRepository>()
.GetAll().Where(t => t.Status != WorkTaskStatus.Done).ToList();
var vm = new AddTimeEntryDialogViewModel(tasks);
if (prefillCategory is not null) vm.SelectedCategory = prefillCategory;
if (prefillDate is { } date) vm.DateText = date.ToString("dd.MM.yyyy");
if (prefillStart is { } s) vm.StartTimeText = s.ToString("HH:mm");
if (prefillEnd is { } e) vm.EndTimeText = e.ToString("HH:mm");
var dialog = new AddTimeEntryDialog { DataContext = vm };
await dialog.ShowDialog<bool>(owner);
return vm.Result;
}
}