30 lines
1.4 KiB
C#
30 lines
1.4 KiB
C#
using Avalonia.Controls;
|
|
using LehrerApp.Core.Interfaces;
|
|
using LehrerApp.Core.Models;
|
|
using LehrerApp.Desktop.ViewModels.Students;
|
|
using LehrerApp.Desktop.Views.Students;
|
|
using LehrerApp.Templating;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace LehrerApp.Desktop.Services;
|
|
|
|
/// <summary>Öffnet den bestehenden Elternbrief-Dialog für einen Schüler, egal ob der Aufruf aus
|
|
/// der Schülerdetailansicht (Student schon im DataContext) oder aus dem Formulare-Menü (Student
|
|
/// erst per Picker gewählt) kommt.</summary>
|
|
public static class LetterDialogs
|
|
{
|
|
public static async Task ShowCreateLetterDialogAsync(Window owner, Student student)
|
|
{
|
|
var vm = new CreateLetterDialogViewModel(student,
|
|
App.Services.GetRequiredService<TemplateStore>(),
|
|
App.Services.GetRequiredService<ITemplateRenderer>(),
|
|
App.Services.GetRequiredService<IGroupMembershipRepository>(),
|
|
App.Services.GetRequiredService<IGroupRepository>(),
|
|
options => App.Services.GetRequiredService<StudentAttendanceCalendarService>().Build(student, options));
|
|
var dialog = new CreateLetterDialog { DataContext = vm };
|
|
var path = await dialog.ShowDialog<string?>(owner);
|
|
if (!string.IsNullOrEmpty(path) && File.Exists(path))
|
|
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(path) { UseShellExecute = true });
|
|
}
|
|
}
|