Compare commits
	
		
			2 Commits
		
	
	
		
			v1.0.0.5
			...
			8ff576257b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8ff576257b | |||
| 6eaa928147 | 
@@ -602,7 +602,7 @@ namespace Elwig.Windows {
 | 
				
			|||||||
            PreviewButton.IsEnabled = false;
 | 
					            PreviewButton.IsEnabled = false;
 | 
				
			||||||
            PrintButton.IsEnabled = false;
 | 
					            PrintButton.IsEnabled = false;
 | 
				
			||||||
            EmailButton.IsEnabled = false;
 | 
					            EmailButton.IsEnabled = false;
 | 
				
			||||||
            Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					            Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
            GenerateButton.IsEnabled = false;
 | 
					            GenerateButton.IsEnabled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            DisposeDocs();
 | 
					            DisposeDocs();
 | 
				
			||||||
@@ -828,25 +828,27 @@ namespace Elwig.Windows {
 | 
				
			|||||||
            EmailButton.IsEnabled = EmailDocuments != null && App.Config.Smtp != null;
 | 
					            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() {
 | 
					            var d = new OpenFolderDialog() {
 | 
				
			||||||
                Title = "Ordner auswählen - Elwig",
 | 
					                Title = "Ordner auswählen - Elwig",
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            if (d.ShowDialog() == true) {
 | 
					            if (d.ShowDialog() == true) {
 | 
				
			||||||
                Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					                Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
                PrintDocument?.SaveTo($"{d.FolderName}/Print.pdf");
 | 
					                await Task.Run(() => {
 | 
				
			||||||
                if (EmailDocuments != null) {
 | 
					                    PrintDocument?.SaveTo($"{d.FolderName}/Print.pdf");
 | 
				
			||||||
                    foreach (var (m, docs) in EmailDocuments) {
 | 
					                    if (EmailDocuments != null) {
 | 
				
			||||||
                        var folder = $"{d.FolderName}/E-Mail/{m.AdministrativeName.Trim()}";
 | 
					                        foreach (var (m, docs) in EmailDocuments) {
 | 
				
			||||||
                        Directory.CreateDirectory(folder);
 | 
					                            var folder = $"{d.FolderName}/E-Mail/{m.AdministrativeName.Trim()}";
 | 
				
			||||||
                        foreach (var item in docs.Select((d, i) => new { Index = i, Doc = d })) {
 | 
					                            Directory.CreateDirectory(folder);
 | 
				
			||||||
                            var doc = item.Doc;
 | 
					                            foreach (var item in docs.Select((d, i) => new { Index = i, Doc = d })) {
 | 
				
			||||||
                            var name = Utils.NormalizeFileName(doc.Title);
 | 
					                                var doc = item.Doc;
 | 
				
			||||||
                            doc.SaveTo($"{folder}/{item.Index + 1:00}.{name}.pdf");
 | 
					                                var name = Utils.NormalizeFileName(doc.Title);
 | 
				
			||||||
                        }
 | 
					                                doc.SaveTo($"{folder}/{item.Index + 1:00}.{name}.pdf");
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                });
 | 
				
			||||||
                Mouse.OverrideCursor = null;
 | 
					                Mouse.OverrideCursor = null;
 | 
				
			||||||
                Process.Start("explorer.exe", d.FolderName);
 | 
					                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?",
 | 
					            var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?",
 | 
				
			||||||
                "Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
 | 
					                "Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
 | 
				
			||||||
            if (res == MessageBoxResult.Yes) {
 | 
					            if (res == MessageBoxResult.Yes) {
 | 
				
			||||||
                Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					                Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
                if (App.Config.Debug) {
 | 
					                await Task.Run(async () => {
 | 
				
			||||||
                    PrintDocument.Show();
 | 
					                    if (App.Config.Debug) {
 | 
				
			||||||
                } else {
 | 
					                        PrintDocument.Show();
 | 
				
			||||||
                    await PrintDocument.Print();
 | 
					                    } else {
 | 
				
			||||||
                    await Utils.AddSentMails(
 | 
					                        await PrintDocument.Print();
 | 
				
			||||||
                        PrintMemberDocuments.Select(d => (
 | 
					                        await Utils.AddSentMails(
 | 
				
			||||||
                            "postal", d.Key.MgNr, d.Key.AdministrativeName,
 | 
					                            PrintMemberDocuments.Select(d => (
 | 
				
			||||||
                            new string[] { d.Value.Select(d => (d as BusinessDocument)?.Address).FirstOrDefault(a => a != null) ?? d.Key.FullAddress },
 | 
					                                "postal", d.Key.MgNr, d.Key.AdministrativeName,
 | 
				
			||||||
                            d.Value.Select(d => d.Title).FirstOrDefault("Briefkopf"),
 | 
					                                new string[] { d.Value.Select(d => (d as BusinessDocument)?.Address).FirstOrDefault(a => a != null) ?? d.Key.FullAddress },
 | 
				
			||||||
                            d.Value.Select(d => d.Title).ToArray()
 | 
					                                d.Value.Select(d => d.Title).FirstOrDefault("Briefkopf"),
 | 
				
			||||||
                        ))
 | 
					                                d.Value.Select(d => d.Title).ToArray()
 | 
				
			||||||
                    );
 | 
					                            ))
 | 
				
			||||||
                }
 | 
					                        );
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
                Mouse.OverrideCursor = null;
 | 
					                Mouse.OverrideCursor = null;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -893,8 +897,8 @@ namespace Elwig.Windows {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            SmtpClient? client = null;
 | 
					            SmtpClient? client = null;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					                Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
                client = await Utils.GetSmtpClient();
 | 
					                client = await Task.Run(Utils.GetSmtpClient);
 | 
				
			||||||
                Mouse.OverrideCursor = null;
 | 
					                Mouse.OverrideCursor = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var res = MessageBox.Show($"Sollen {EmailDocuments.Count:N0} E-Mails verschickt werden?",
 | 
					                var res = MessageBox.Show($"Sollen {EmailDocuments.Count:N0} E-Mails verschickt werden?",
 | 
				
			||||||
@@ -903,31 +907,33 @@ namespace Elwig.Windows {
 | 
				
			|||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					                Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
                var subject = EmailSubjectInput.Text;
 | 
					                var subject = EmailSubjectInput.Text;
 | 
				
			||||||
                var text = EmailBodyInput.Text;
 | 
					                var text = EmailBodyInput.Text;
 | 
				
			||||||
                await Utils.AddSentMailBody(subject, text, EmailDocuments.Count);
 | 
					                await Task.Run(async () => {
 | 
				
			||||||
                foreach (var (m, docs) in EmailDocuments) {
 | 
					                    await Utils.AddSentMailBody(subject, text, EmailDocuments.Count);
 | 
				
			||||||
                    using var msg = new MimeMessage();
 | 
					                    foreach (var (m, docs) in EmailDocuments) {
 | 
				
			||||||
                    msg.From.Add(new MailboxAddress(App.Client.NameFull, App.Config.Smtp.Value.From));
 | 
					                        using var msg = new MimeMessage();
 | 
				
			||||||
                    msg.To.AddRange(m.EmailAddresses.OrderBy(a => a.Nr).Select(a => new MailboxAddress(m.AdministrativeName, a.Address)));
 | 
					                        msg.From.Add(new MailboxAddress(App.Client.NameFull, App.Config.Smtp.Value.From));
 | 
				
			||||||
                    msg.Subject = subject;
 | 
					                        msg.To.AddRange(m.EmailAddresses.OrderBy(a => a.Nr).Select(a => new MailboxAddress(m.AdministrativeName, a.Address)));
 | 
				
			||||||
                    var body = new Multipart("mixed") {
 | 
					                        msg.Subject = subject;
 | 
				
			||||||
                        new TextPart("plain") { Text = text }
 | 
					                        var body = new Multipart("mixed") {
 | 
				
			||||||
                    };
 | 
					                            new TextPart("plain") { Text = text }
 | 
				
			||||||
                    foreach (var doc in docs) {
 | 
					                        };
 | 
				
			||||||
                        var name = Utils.NormalizeFileName(doc.Title);
 | 
					                        foreach (var doc in docs) {
 | 
				
			||||||
                        body.Add(doc.AsEmailAttachment($"{name}.pdf"));
 | 
					                            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);
 | 
					                MessageBox.Show("Erfolgreich alle E-Mails verschickt!", "Rundschreiben verschicken", MessageBoxButton.OK, MessageBoxImage.Information);
 | 
				
			||||||
            } catch (Exception exc) {
 | 
					            } catch (Exception exc) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -156,7 +156,7 @@ namespace Elwig.Windows {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private async void AutoAdjustBsButton_Click(object sender, RoutedEventArgs evt) {
 | 
					        private async void AutoAdjustBsButton_Click(object sender, RoutedEventArgs evt) {
 | 
				
			||||||
            Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					            Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                int? kg = AllowanceKgInput.Text == "" ? null : int.Parse(AllowanceKgInput.Text);
 | 
					                int? kg = AllowanceKgInput.Text == "" ? null : int.Parse(AllowanceKgInput.Text);
 | 
				
			||||||
                double? bs = AllowanceBsInput.Text == "" ? null : double.Parse(AllowanceBsInput.Text);
 | 
					                double? bs = AllowanceBsInput.Text == "" ? null : double.Parse(AllowanceBsInput.Text);
 | 
				
			||||||
@@ -169,10 +169,12 @@ namespace Elwig.Windows {
 | 
				
			|||||||
                App.Client.AutoAdjustBs.AllowanceKgPerBs = kgPerBs;
 | 
					                App.Client.AutoAdjustBs.AllowanceKgPerBs = kgPerBs;
 | 
				
			||||||
                App.Client.AutoAdjustBs.AllowancePercent = percent;
 | 
					                App.Client.AutoAdjustBs.AllowancePercent = percent;
 | 
				
			||||||
                App.Client.AutoAdjustBs.MinBs = minBs;
 | 
					                App.Client.AutoAdjustBs.MinBs = minBs;
 | 
				
			||||||
                await App.Client.UpdateValues();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var b = new Billing(Year);
 | 
					                await Task.Run(async () => {
 | 
				
			||||||
                await b.AutoAdjustBusinessShares(new DateOnly(Year, 11, 30), kg ?? default, bs ?? default, kgPerBs ?? default, percent / 100.0 ?? default, minBs ?? default);
 | 
					                    await App.Client.UpdateValues();
 | 
				
			||||||
 | 
					                    var b = new Billing(Year);
 | 
				
			||||||
 | 
					                    await b.AutoAdjustBusinessShares(new DateOnly(Year, 11, 30), kg ?? default, bs ?? default, kgPerBs ?? default, percent / 100.0 ?? default, minBs ?? default);
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
                App.HintContextChange();
 | 
					                App.HintContextChange();
 | 
				
			||||||
            } catch (Exception exc) {
 | 
					            } catch (Exception exc) {
 | 
				
			||||||
                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
					                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
				
			||||||
@@ -183,10 +185,12 @@ namespace Elwig.Windows {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private async void UnAdjustBsButton_Click(object sender, RoutedEventArgs evt) {
 | 
					        private async void UnAdjustBsButton_Click(object sender, RoutedEventArgs evt) {
 | 
				
			||||||
            Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					            Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                var b = new Billing(Year);
 | 
					                await Task.Run(async () => {
 | 
				
			||||||
                await b.UnAdjustBusinessShares();
 | 
					                    var b = new Billing(Year);
 | 
				
			||||||
 | 
					                    await b.UnAdjustBusinessShares();
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
                App.HintContextChange();
 | 
					                App.HintContextChange();
 | 
				
			||||||
            } catch (Exception exc) {
 | 
					            } catch (Exception exc) {
 | 
				
			||||||
                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
					                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
				
			||||||
@@ -281,29 +285,31 @@ namespace Elwig.Windows {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private async void CustomButton_Click(object sender, RoutedEventArgs evt) {
 | 
					        private async void CustomButton_Click(object sender, RoutedEventArgs evt) {
 | 
				
			||||||
            if (MemberInput.SelectedItem is not Member m) return;
 | 
					            if (MemberInput.SelectedItem is not Member m) return;
 | 
				
			||||||
            Mouse.OverrideCursor = Cursors.AppStarting;
 | 
					            Mouse.OverrideCursor = Cursors.Wait;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                using var ctx = new AppDbContext();
 | 
					                await Task.Run(async () => {
 | 
				
			||||||
                if (CustomPayments?.TryGetValue(m.MgNr, out var p) == true) {
 | 
					                    using var ctx = new AppDbContext();
 | 
				
			||||||
                    ctx.Remove(p);
 | 
					                    if (CustomPayments?.TryGetValue(m.MgNr, out var p) == true) {
 | 
				
			||||||
                }
 | 
					                        ctx.Remove(p);
 | 
				
			||||||
                if (sender == SaveCustomButton) {
 | 
					                    }
 | 
				
			||||||
                    var modAbs = decimal.TryParse(CustomModAbsInput.Text, out var n1) ? (decimal?)n1 : null;
 | 
					                    if (sender == SaveCustomButton) {
 | 
				
			||||||
                    var modRel = decimal.TryParse(CustomModRelInput.Text, out var n2) ? (decimal?)n2 / 100 : null;
 | 
					                        var modAbs = decimal.TryParse(CustomModAbsInput.Text, out var n1) ? (decimal?)n1 : null;
 | 
				
			||||||
                    var amount = decimal.TryParse(CustomAmountInput.Text, out var n3) ? (decimal?)n3 : null;
 | 
					                        var modRel = decimal.TryParse(CustomModRelInput.Text, out var n2) ? (decimal?)n2 / 100 : null;
 | 
				
			||||||
                    var modText = CustomModCommentInput.Text.Trim();
 | 
					                        var amount = decimal.TryParse(CustomAmountInput.Text, out var n3) ? (decimal?)n3 : null;
 | 
				
			||||||
                    var text = CustomCommentInput.Text.Trim();
 | 
					                        var modText = CustomModCommentInput.Text.Trim();
 | 
				
			||||||
                    ctx.Add(new PaymentCustom {
 | 
					                        var text = CustomCommentInput.Text.Trim();
 | 
				
			||||||
                        MgNr = m.MgNr,
 | 
					                        ctx.Add(new PaymentCustom {
 | 
				
			||||||
                        Year = Year,
 | 
					                            MgNr = m.MgNr,
 | 
				
			||||||
                        ModAbs = modAbs,
 | 
					                            Year = Year,
 | 
				
			||||||
                        ModRel = modRel,
 | 
					                            ModAbs = modAbs,
 | 
				
			||||||
                        ModComment = modText == "" ? null : modText,
 | 
					                            ModRel = modRel,
 | 
				
			||||||
                        Amount = amount,
 | 
					                            ModComment = modText == "" ? null : modText,
 | 
				
			||||||
                        Comment = text == "" ? null : text,
 | 
					                            Amount = amount,
 | 
				
			||||||
                    });
 | 
					                            Comment = text == "" ? null : text,
 | 
				
			||||||
                }
 | 
					                        });
 | 
				
			||||||
                await ctx.SaveChangesAsync();
 | 
					                    }
 | 
				
			||||||
 | 
					                    await ctx.SaveChangesAsync();
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
            } catch (Exception exc) {
 | 
					            } catch (Exception exc) {
 | 
				
			||||||
                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
					                var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
 | 
				
			||||||
                if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
 | 
					                if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user