diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs index 14787d0..3b184e5 100644 --- a/Elwig/Windows/MailWindow.xaml.cs +++ b/Elwig/Windows/MailWindow.xaml.cs @@ -602,7 +602,7 @@ namespace Elwig.Windows { PreviewButton.IsEnabled = false; PrintButton.IsEnabled = false; EmailButton.IsEnabled = false; - Mouse.OverrideCursor = Cursors.AppStarting; + Mouse.OverrideCursor = Cursors.Wait; GenerateButton.IsEnabled = false; DisposeDocs(); @@ -828,25 +828,27 @@ namespace Elwig.Windows { EmailButton.IsEnabled = EmailDocuments != null && App.Config.Smtp != null; } - private void PreviewButton_Click(object sender, RoutedEventArgs evt) { + private async void PreviewButton_Click(object sender, RoutedEventArgs evt) { var d = new OpenFolderDialog() { Title = "Ordner auswählen - Elwig", }; if (d.ShowDialog() == true) { - Mouse.OverrideCursor = Cursors.AppStarting; - PrintDocument?.SaveTo($"{d.FolderName}/Print.pdf"); - if (EmailDocuments != null) { - foreach (var (m, docs) in EmailDocuments) { - var folder = $"{d.FolderName}/E-Mail/{m.AdministrativeName.Trim()}"; - Directory.CreateDirectory(folder); - foreach (var item in docs.Select((d, i) => new { Index = i, Doc = d })) { - var doc = item.Doc; - var name = Utils.NormalizeFileName(doc.Title); - doc.SaveTo($"{folder}/{item.Index + 1:00}.{name}.pdf"); - } + Mouse.OverrideCursor = Cursors.Wait; + await Task.Run(() => { + PrintDocument?.SaveTo($"{d.FolderName}/Print.pdf"); + if (EmailDocuments != null) { + foreach (var (m, docs) in EmailDocuments) { + var folder = $"{d.FolderName}/E-Mail/{m.AdministrativeName.Trim()}"; + Directory.CreateDirectory(folder); + foreach (var item in docs.Select((d, i) => new { Index = i, Doc = d })) { + var doc = item.Doc; + var name = Utils.NormalizeFileName(doc.Title); + doc.SaveTo($"{folder}/{item.Index + 1:00}.{name}.pdf"); + } + } } - } + }); Mouse.OverrideCursor = null; Process.Start("explorer.exe", d.FolderName); } @@ -862,20 +864,22 @@ namespace Elwig.Windows { var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?", "Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); if (res == MessageBoxResult.Yes) { - Mouse.OverrideCursor = Cursors.AppStarting; - if (App.Config.Debug) { - PrintDocument.Show(); - } else { - await PrintDocument.Print(); - await Utils.AddSentMails( - PrintMemberDocuments.Select(d => ( - "postal", d.Key.MgNr, d.Key.AdministrativeName, - new string[] { d.Value.Select(d => (d as BusinessDocument)?.Address).FirstOrDefault(a => a != null) ?? d.Key.FullAddress }, - d.Value.Select(d => d.Title).FirstOrDefault("Briefkopf"), - d.Value.Select(d => d.Title).ToArray() - )) - ); - } + Mouse.OverrideCursor = Cursors.Wait; + await Task.Run(async () => { + if (App.Config.Debug) { + PrintDocument.Show(); + } else { + await PrintDocument.Print(); + await Utils.AddSentMails( + PrintMemberDocuments.Select(d => ( + "postal", d.Key.MgNr, d.Key.AdministrativeName, + new string[] { d.Value.Select(d => (d as BusinessDocument)?.Address).FirstOrDefault(a => a != null) ?? d.Key.FullAddress }, + d.Value.Select(d => d.Title).FirstOrDefault("Briefkopf"), + d.Value.Select(d => d.Title).ToArray() + )) + ); + } + }); Mouse.OverrideCursor = null; } @@ -893,8 +897,8 @@ namespace Elwig.Windows { SmtpClient? client = null; try { - Mouse.OverrideCursor = Cursors.AppStarting; - client = await Utils.GetSmtpClient(); + Mouse.OverrideCursor = Cursors.Wait; + client = await Task.Run(Utils.GetSmtpClient); Mouse.OverrideCursor = null; var res = MessageBox.Show($"Sollen {EmailDocuments.Count:N0} E-Mails verschickt werden?", @@ -903,31 +907,33 @@ namespace Elwig.Windows { return; } - Mouse.OverrideCursor = Cursors.AppStarting; + Mouse.OverrideCursor = Cursors.Wait; var subject = EmailSubjectInput.Text; var text = EmailBodyInput.Text; - await Utils.AddSentMailBody(subject, text, EmailDocuments.Count); - foreach (var (m, docs) in EmailDocuments) { - using var msg = new MimeMessage(); - msg.From.Add(new MailboxAddress(App.Client.NameFull, App.Config.Smtp.Value.From)); - msg.To.AddRange(m.EmailAddresses.OrderBy(a => a.Nr).Select(a => new MailboxAddress(m.AdministrativeName, a.Address))); - msg.Subject = subject; - var body = new Multipart("mixed") { - new TextPart("plain") { Text = text } - }; - foreach (var doc in docs) { - var name = Utils.NormalizeFileName(doc.Title); - body.Add(doc.AsEmailAttachment($"{name}.pdf")); + await Task.Run(async () => { + await Utils.AddSentMailBody(subject, text, EmailDocuments.Count); + foreach (var (m, docs) in EmailDocuments) { + using var msg = new MimeMessage(); + msg.From.Add(new MailboxAddress(App.Client.NameFull, App.Config.Smtp.Value.From)); + msg.To.AddRange(m.EmailAddresses.OrderBy(a => a.Nr).Select(a => new MailboxAddress(m.AdministrativeName, a.Address))); + msg.Subject = subject; + var body = new Multipart("mixed") { + new TextPart("plain") { Text = text } + }; + foreach (var doc in docs) { + var name = Utils.NormalizeFileName(doc.Title); + body.Add(doc.AsEmailAttachment($"{name}.pdf")); + } + msg.Body = body; + await client!.SendAsync(msg); + await Utils.AddSentMails([( + "email", m.MgNr, m.AdministrativeName, + m.EmailAddresses.OrderBy(a => a.Nr).Select(a => a.Address).ToArray(), + subject, + docs.Select(d => d.Title).ToArray() + )]); } - msg.Body = body; - await client!.SendAsync(msg); - await Utils.AddSentMails([( - "email", m.MgNr, m.AdministrativeName, - m.EmailAddresses.OrderBy(a => a.Nr).Select(a => a.Address).ToArray(), - subject, - docs.Select(d => d.Title).ToArray() - )]); - } + }); MessageBox.Show("Erfolgreich alle E-Mails verschickt!", "Rundschreiben verschicken", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception exc) {