using Avalonia.Controls; using Avalonia.Interactivity; using LehrerApp.Core.Interfaces; using LehrerApp.Core.Models; using LehrerApp.Core.Services; using LehrerApp.Desktop.Services; using LehrerApp.Desktop.ViewModels.UntisHub; using Microsoft.Extensions.DependencyInjection; namespace LehrerApp.Desktop.Views.UntisHub; public partial class UntisHubDialog : Window { public UntisHubDialog() { InitializeComponent(); DataContext = new UntisHubViewModel( App.Services.GetRequiredService(), App.Services.GetRequiredService(), App.Services.GetRequiredService()); } private void OnRefreshClick(object? sender, RoutedEventArgs e) { if (DataContext is UntisHubViewModel vm) vm.Load(); } private async void OnCheckClick(object? sender, RoutedEventArgs e) { if (DataContext is not UntisHubViewModel vm || sender is not Button { DataContext: UntisHubRowViewModel row }) return; var hub = App.Services.GetRequiredService(); var today = DateOnly.FromDateTime(DateTime.Today); switch (row.Kind) { case UntisHubJobKind.FehlzeitenKurz or UntisHubJobKind.FehlzeitenLang: var group = row.GroupId is { } id ? vm.FindGroup(id) : null; if (group is null) return; var schoolYears = App.Services.GetRequiredService(); var start = row.Kind == UntisHubJobKind.FehlzeitenKurz ? today.AddDays(-30) : schoolYears.SchoolYearStart(schoolYears.CurrentSchoolYear()); await UntisHubActions.RunFehlzeitenAsync(this, group, row.Kind, start, today, hub); break; case UntisHubJobKind.OffenePeriods: await UntisHubActions.RunOffenePeriodsAsync(this, hub); break; case UntisHubJobKind.Klassenbuchabgleich: await UntisHubActions.RunKlassenbuchAsync(this, hub); break; case UntisHubJobKind.Hausaufgabenabgleich: await UntisHubActions.RunHausaufgabenAsync(this, hub); break; } vm.Load(); } }