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); } } private async Task ShowAddEntryDialog(string? prefillCategory = 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() .GetAll().Where(t => t.Status != WorkTaskStatus.Done).ToList(); var vm = new AddTimeEntryDialogViewModel(tasks); if (prefillCategory is not null) vm.SelectedCategory = prefillCategory; 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(owner); return vm.Result; } }