- Neue-Stunde-Dialog: Datum wird beim Anlegen anhand des Stundenplans
und der letzten Stunde der Einheit vorbelegt statt auf "heute"
(behebt eine falsch erkannte Doppelstunde, wenn "heute" nicht auf
den passenden Wochentag fiel).
- Zeiterfassung: Button "Unterrichtszeit heute übernehmen" schlägt
Start/Ende aus dem heutigen Stundenplan inkl. Puffer davor/danach vor.
- Dashboard: neue Kachel "Ungeplante Stunden" erinnert an Stunden ohne
Thema für heute/morgen, mit Opt-out je Gruppe ("Benötigt
Unterrichtsplanung"), Doppelstunden-Erkennung (keine doppelte Meldung
für die zweite Periode) und Berücksichtigung von Stundenausfall.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
41 lines
1.5 KiB
C#
41 lines
1.5 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);
|
|
}
|
|
}
|
|
|
|
private async Task<TimeEntry?> 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<IWorkTaskRepository>()
|
|
.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<bool>(owner);
|
|
return vm.Result;
|
|
}
|
|
}
|