[#31] MemberAdminWindow: Rework menu and add more features

This commit is contained in:
2024-03-23 21:50:29 +01:00
parent 7b48385992
commit e435e5da8d
2 changed files with 230 additions and 35 deletions

View File

@ -45,20 +45,56 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Menu Grid.ColumnSpan="3" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White"> <Menu Grid.ColumnSpan="3" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White">
<MenuItem Header="Mitglied"> <MenuItem Header="Kontaktieren">
<MenuItem x:Name="Menu_Member_SendEmail" Header="E-Mail senden" IsEnabled="False" <MenuItem x:Name="Menu_Contact_Email" Header="E-Mail senden..." IsEnabled="False"
Click="Menu_Member_SendEmail_Click"/> Click="Menu_Contact_Email_Click"/>
<MenuItem x:Name="Menu_Contact_Letterhead" Header="Briefkopf drucken" IsEnabled="False"
Click="Menu_Contact_Letterhead_Click"/>
</MenuItem> </MenuItem>
<MenuItem Header="Drucken"> <MenuItem Header="Stammdatenblatt">
<MenuItem x:Name="Menu_Print_Letterhead" Header="Briefkopf drucken" <MenuItem x:Name="Menu_MemberDataSheet_Show" Header="...anzeigen" IsEnabled="False"
Click="Menu_Print_Letterhead_Click"/> Click="Menu_MemberDataSheet_Show_Click" InputGestureText="Strg+P"/>
<MenuItem x:Name="Menu_Show_MemberDataSheet" Header="Stammdatenblatt anzeigen" IsEnabled="False" <MenuItem x:Name="Menu_MemberDataSheet_Print" Header="...drucken" IsEnabled="False"
Click="Menu_Show_MemberDataSheet_Click" InputGestureText="Strg+P"/> Click="Menu_MemberDataSheet_Print_Click" InputGestureText="Strg+Shift+P"/>
<MenuItem x:Name="Menu_Print_MemberDataSheet" Header="Stammdatenblatt drucken" IsEnabled="False" <MenuItem x:Name="Menu_MemberDataSheet_Email" Header="...per E-Mail schicken" IsEnabled="False"
Click="Menu_Print_MemberDataSheet_Click" InputGestureText="Strg+Shift+P"/> Click="Menu_MemberDataSheet_Email_Click"/>
</MenuItem> </MenuItem>
<MenuItem Header="Werkzeuge"> <MenuItem Header="Anlieferungsbestätigung" x:Name="Menu_DeliveryConfirmation">
<MenuItem Header="Alle Mitglieder überprüfen"/> <MenuItem x:Name="Menu_DeliveryConfirmation_Show" Header="...anzeigen" IsEnabled="False"
Click="Menu_DeliveryConfirmation_Show_Click"/>
<MenuItem x:Name="Menu_DeliveryConfirmation_Print" Header="...drucken" IsEnabled="False"
Click="Menu_DeliveryConfirmation_Print_Click"/>
<MenuItem x:Name="Menu_DeliveryConfirmation_Email" Header="...per E-Mail schicken" IsEnabled="False"
Click="Menu_DeliveryConfirmation_Email_Click"/>
</MenuItem>
<MenuItem Header="Mitgliederliste" x:Name="Menu_List">
<MenuItem x:Name="Menu_List_SaveActive" Header="...mit Aktiven speichern (Excel)"
Click="Menu_List_SaveActive_Click" InputGestureText="Strg+L"/>
<MenuItem x:Name="Menu_List_ShowActive" Header="...mit Aktiven anzeigen (PDF)"
Click="Menu_List_ShowActive_Click" InputGestureText="Strg+O"/>
<MenuItem x:Name="Menu_List_PrintActive" Header="...mit Aktiven drucken"
Click="Menu_List_PrintActive_Click" InputGestureText="Strg+Shift+O"/>
<Separator/>
<MenuItem x:Name="Menu_List_SaveFilters" Header="...aus Filtern speichern (Excel)"
Click="Menu_List_SaveFilters_Click"/>
<MenuItem x:Name="Menu_List_ShowFilters" Header="...aus Filtern anzeigen (PDF)"
Click="Menu_List_ShowFilters_Click"/>
<MenuItem x:Name="Menu_List_PrintFilters" Header="...aus Filtern drucken"
Click="Menu_List_PrintFilters_Click"/>
<Separator/>
<MenuItem x:Name="Menu_List_SaveAll" Header="...mit allen speichern (Excel)"
Click="Menu_List_SaveAll_Click"/>
<MenuItem x:Name="Menu_List_ShowAll" Header="...mit allen anzeigen (PDF)"
Click="Menu_List_ShowAll_Click"/>
<MenuItem x:Name="Menu_List_PrintAll" Header="...mit allen drucken"
Click="Menu_List_PrintAll_Click"/>
<Separator/>
<MenuItem x:Name="Menu_List_OrderMgNr" Header="...nach MgNr. sortieren" IsCheckable="True" IsChecked="True"
Click="Menu_List_Order_Click"/>
<MenuItem x:Name="Menu_List_OrderName" Header="...nach Nachname, Vorname sortieren" IsCheckable="True"
Click="Menu_List_Order_Click"/>
<MenuItem x:Name="Menu_List_OrderOrt" Header="...nach Stamm-KG, Name sortieren" IsCheckable="True"
Click="Menu_List_Order_Click"/>
</MenuItem> </MenuItem>
</Menu> </Menu>
@ -256,8 +292,8 @@
<TextBox x:Name="EmailAddress7Input" Margin="0,190,10,0" Grid.Column="1" Grid.ColumnSpan="2" <TextBox x:Name="EmailAddress7Input" Margin="0,190,10,0" Grid.Column="1" Grid.ColumnSpan="2"
TextChanged="EmailAddressInput_TextChanged" LostFocus="EmailAddressInput_LostFocus"/> TextChanged="EmailAddressInput_TextChanged" LostFocus="EmailAddressInput_LostFocus"/>
<Label x:Name="EmailAddress8Label" Content="E-Mail-Adresse:" Margin="10,210,0,0" Grid.Column="0"/> <Label x:Name="EmailAddress8Label" Content="E-Mail-Adresse:" Margin="10,220,0,0" Grid.Column="0"/>
<TextBox x:Name="EmailAddress8Input" Margin="0,210,10,0" Grid.Column="1" Grid.ColumnSpan="2" <TextBox x:Name="EmailAddress8Input" Margin="0,220,10,0" Grid.Column="1" Grid.ColumnSpan="2"
TextChanged="EmailAddressInput_TextChanged" LostFocus="EmailAddressInput_LostFocus"/> TextChanged="EmailAddressInput_TextChanged" LostFocus="EmailAddressInput_LostFocus"/>
<Label x:Name="EmailAddress9Label" Content="E-Mail-Adresse:" Margin="10,250,0,0" Grid.Column="0"/> <Label x:Name="EmailAddress9Label" Content="E-Mail-Adresse:" Margin="10,250,0,0" Grid.Column="0"/>

View File

@ -11,6 +11,7 @@ using System.Threading.Tasks;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using Elwig.Documents; using Elwig.Documents;
using System.Diagnostics; using System.Diagnostics;
using Elwig.Models.Dtos;
namespace Elwig.Windows { namespace Elwig.Windows {
public partial class MemberAdminWindow : AdministrationWindow { public partial class MemberAdminWindow : AdministrationWindow {
@ -23,16 +24,22 @@ namespace Elwig.Windows {
private readonly (Label Label, TextBox Address)[] EmailAddressInputs; private readonly (Label Label, TextBox Address)[] EmailAddressInputs;
private readonly RoutedCommand CtrlF = new("CtrlF", typeof(MemberAdminWindow), [new KeyGesture(Key.F, ModifierKeys.Control)]); private readonly RoutedCommand CtrlF = new("CtrlF", typeof(MemberAdminWindow), [new KeyGesture(Key.F, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlL = new("CtrlL", typeof(MemberAdminWindow), [new KeyGesture(Key.L, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlP = new("CtrlP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control)]); private readonly RoutedCommand CtrlP = new("CtrlP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlO = new("CtrlO", typeof(MemberAdminWindow), [new KeyGesture(Key.O, ModifierKeys.Control)]);
private readonly RoutedCommand CtrlShiftP = new("CtrlShiftP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control | ModifierKeys.Shift)]); private readonly RoutedCommand CtrlShiftP = new("CtrlShiftP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control | ModifierKeys.Shift)]);
private readonly RoutedCommand CtrlShiftO = new("CtrlShiftO", typeof(MemberAdminWindow), [new KeyGesture(Key.O, ModifierKeys.Control | ModifierKeys.Shift)]);
protected static ObservableCollection<KeyValuePair<string, string>> PhoneNrTypes { get; set; } = new(Utils.PhoneNrTypes); protected static ObservableCollection<KeyValuePair<string, string>> PhoneNrTypes { get; set; } = new(Utils.PhoneNrTypes);
public MemberAdminWindow() { public MemberAdminWindow() {
InitializeComponent(); InitializeComponent();
CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput)); CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput));
CommandBindings.Add(new CommandBinding(CtrlP, Menu_Show_MemberDataSheet_Click)); CommandBindings.Add(new CommandBinding(CtrlL, Menu_List_SaveActive_Click));
CommandBindings.Add(new CommandBinding(CtrlShiftP, Menu_Print_MemberDataSheet_Click)); CommandBindings.Add(new CommandBinding(CtrlP, Menu_MemberDataSheet_Show_Click));
CommandBindings.Add(new CommandBinding(CtrlO, Menu_List_ShowActive_Click));
CommandBindings.Add(new CommandBinding(CtrlShiftP, Menu_MemberDataSheet_Print_Click));
CommandBindings.Add(new CommandBinding(CtrlShiftO, Menu_List_PrintActive_Click));
ExemptInputs = [ ExemptInputs = [
SearchInput, ActiveMemberInput, MemberList, SearchInput, ActiveMemberInput, MemberList,
]; ];
@ -67,6 +74,15 @@ namespace Elwig.Windows {
InitializeDelayTimer(SearchInput, SearchInput_TextChanged); InitializeDelayTimer(SearchInput, SearchInput_TextChanged);
SearchInput.TextChanged -= SearchInput_TextChanged; SearchInput.TextChanged -= SearchInput_TextChanged;
Menu_List_OrderMgNr.IsChecked = false;
Menu_List_OrderName.IsChecked = false;
Menu_List_OrderOrt.IsChecked = false;
switch (App.Client.OrderingMemberList) {
case 0: Menu_List_OrderMgNr.IsChecked = true; break;
case 1: Menu_List_OrderName.IsChecked = true; break;
case 2: Menu_List_OrderOrt.IsChecked = true; break;
}
} }
private void Window_Loaded(object sender, RoutedEventArgs evt) { private void Window_Loaded(object sender, RoutedEventArgs evt) {
@ -271,6 +287,22 @@ namespace Elwig.Windows {
await base.OnRenewContext(ctx); await base.OnRenewContext(ctx);
ControlUtils.RenewItemsSource(BranchInput, await ctx.Branches.OrderBy(b => b.Name).ToListAsync()); ControlUtils.RenewItemsSource(BranchInput, await ctx.Branches.OrderBy(b => b.Name).ToListAsync());
ControlUtils.RenewItemsSource(DefaultKgInput, await ctx.WbKgs.Select(k => k.AtKg).OrderBy(k => k.Name).ToListAsync()); ControlUtils.RenewItemsSource(DefaultKgInput, await ctx.WbKgs.Select(k => k.AtKg).OrderBy(k => k.Name).ToListAsync());
Menu_DeliveryConfirmation.Items.Clear();
foreach (var s in await ctx.Seasons.OrderByDescending(s => s.Year).ToListAsync()) {
var i = new MenuItem { Header = $"Saison {s.Year}...", IsEnabled = MemberList.SelectedItem != null };
var show = new MenuItem { Header = "...anzeigen" };
show.Click += Menu_DeliveryConfirmation_Show_Click;
i.Items.Add(show);
var print = new MenuItem { Header = "...drucken" };
print.Click += Menu_DeliveryConfirmation_Print_Click;
i.Items.Add(print);
Menu_DeliveryConfirmation.Items.Add(i);
var email = new MenuItem { Header = "...per E-Mail schicken" };
email.Click += Menu_DeliveryConfirmation_Email_Click;
i.Items.Add(email);
}
await RefreshMemberList(); await RefreshMemberList();
StatusMembers.Text = $"Mitglieder: {await ctx.Members.CountAsync(m => m.IsActive):N0} ({await ctx.Members.CountAsync():N0})"; StatusMembers.Text = $"Mitglieder: {await ctx.Members.CountAsync(m => m.IsActive):N0} ({await ctx.Members.CountAsync():N0})";
StatusBusinessShares.Text = $"Geschäftsanteile: {await ctx.Members.Where(m => m.IsActive).SumAsync(m => m.BusinessShares):N0} ({await ctx.Members.SumAsync(m => m.BusinessShares):N0})"; StatusBusinessShares.Text = $"Geschäftsanteile: {await ctx.Members.Where(m => m.IsActive).SumAsync(m => m.BusinessShares):N0} ({await ctx.Members.SumAsync(m => m.BusinessShares):N0})";
@ -443,17 +475,17 @@ namespace Elwig.Windows {
} }
private async void SearchInput_TextChanged(object sender, RoutedEventArgs evt) { private async void SearchInput_TextChanged(object sender, RoutedEventArgs evt) {
TextFilter = SearchInput.Text.ToLower().Split(" ").ToList().FindAll(e => e.Length > 0); TextFilter = SearchInput.Text.ToLower().Split(' ').ToList().FindAll(e => e.Length > 0);
await RefreshMemberListQuery(true); await RefreshMemberListQuery(true);
} }
private void Menu_Member_SendEmail_Click(object sender, RoutedEventArgs evt) { private void Menu_Contact_Email_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
Utils.MailTo(m.EmailAddresses.Select(a => a.Address)); Utils.MailTo(m.EmailAddresses.Select(a => a.Address));
} }
private async void Menu_Print_Letterhead_Click(object sender, RoutedEventArgs evt) { private async void Menu_Contact_Letterhead_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
@ -471,18 +503,39 @@ namespace Elwig.Windows {
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
} }
private async void Menu_Print_MemberDataSheet_Click(object sender, RoutedEventArgs evt) { private async void Menu_MemberDataSheet_Show_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
await GenerateMemberDataSheet(m, 0);
}
private async void Menu_MemberDataSheet_Print_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m)
return;
await GenerateMemberDataSheet(m, 1);
}
private async void Menu_MemberDataSheet_Email_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m)
return;
await GenerateMemberDataSheet(m, 2);
}
private static async Task GenerateMemberDataSheet(Member m, int mode) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
using var doc = new MemberDataSheet(m, ctx); using var doc = new MemberDataSheet(m, ctx);
await doc.Generate(); await doc.Generate();
if (App.Config.Debug) { if (mode == 1 && !App.Config.Debug) {
doc.Show();
} else {
await doc.Print(); await doc.Print();
} else if (mode == 2) {
var success = await Utils.SendEmail(m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt", [doc]);
if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
MessageBoxButton.OK, MessageBoxImage.Information);
} else {
doc.Show();
} }
} catch (Exception exc) { } catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
@ -490,21 +543,118 @@ namespace Elwig.Windows {
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
} }
private async void Menu_Show_MemberDataSheet_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryConfirmation_Show_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0];
if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return; return;
await GenerateDeliveryConfirmation(m, s, 0);
}
private async void Menu_DeliveryConfirmation_Print_Click(object sender, RoutedEventArgs evt) {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0];
if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return;
await GenerateDeliveryConfirmation(m, s, 1);
}
private async void Menu_DeliveryConfirmation_Email_Click(object sender, RoutedEventArgs evt) {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0];
if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return;
await GenerateDeliveryConfirmation(m, s, 2);
}
private static async Task GenerateDeliveryConfirmation(Member m, int year, int mode) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
using var doc = new MemberDataSheet(m, ctx); var data = await DeliveryConfirmationDeliveryData.ForMember(ctx.DeliveryParts, year, m);
using var doc = new DeliveryConfirmation(ctx, year, m, data);
await doc.Generate(); await doc.Generate();
doc.Show(); if (mode == 1 && !App.Config.Debug) {
await doc.Print();
} else if (mode == 2) {
var success = await Utils.SendEmail(m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}", [doc]);
if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
MessageBoxButton.OK, MessageBoxImage.Information);
} else {
doc.Show();
}
} catch (Exception exc) { } catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
} }
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
} }
private async void Menu_List_SaveActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, 0); }
private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, 1); }
private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, 2); }
private async void Menu_List_SaveFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, 0); }
private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, 1); }
private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, 2); }
private async void Menu_List_SaveAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, 0); }
private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, 1); }
private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, 2); }
private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) {
Menu_List.IsSubmenuOpen = true;
if (sender == Menu_List_OrderMgNr) {
App.Client.OrderingMemberList = 0;
Menu_List_OrderMgNr.IsChecked = true;
Menu_List_OrderName.IsChecked = false;
Menu_List_OrderOrt.IsChecked = false;
} else if (sender == Menu_List_OrderName) {
App.Client.OrderingMemberList = 1;
Menu_List_OrderMgNr.IsChecked = false;
Menu_List_OrderName.IsChecked = true;
Menu_List_OrderOrt.IsChecked = false;
} else if (sender == Menu_List_OrderOrt) {
App.Client.OrderingMemberList = 2;
Menu_List_OrderMgNr.IsChecked = false;
Menu_List_OrderName.IsChecked = false;
Menu_List_OrderOrt.IsChecked = true;
}
await App.Client.UpdateValues();
}
private async Task GenerateMemberList(int modeWho, int modeWhat) {
using var ctx = new AppDbContext();
IQueryable<Member> list;
if (modeWho == 0) {
list = ctx.Members.Where(m => m.IsActive);
} else if (modeWho == 1) {
list = ctx.Members; // TODO
} else {
list = ctx.Members;
}
if (Menu_List_OrderMgNr.IsChecked) {
list = list.OrderBy(m => m.MgNr);
} else if (Menu_List_OrderName.IsChecked) {
list = list
.OrderBy(m => m.FamilyName)
.ThenBy(m => m.GivenName)
.ThenBy(m => m.MgNr);
} else if (Menu_List_OrderOrt.IsChecked) {
list = list
.OrderBy(m => m.DefaultWbKg!.AtKg.Name)
.ThenBy(m => m.FamilyName)
.ThenBy(m => m.GivenName)
.ThenBy(m => m.MgNr);
}
if (modeWhat == 0) {
} else if (modeWhat == 1) {
} else if (modeWhat == 2) {
}
// TODO
}
private void FocusSearchInput(object sender, RoutedEventArgs evt) { private void FocusSearchInput(object sender, RoutedEventArgs evt) {
if (!IsEditing && !IsCreating) { if (!IsEditing && !IsCreating) {
SearchInput.Focus(); SearchInput.Focus();
@ -807,19 +957,28 @@ namespace Elwig.Windows {
StatusAreaCommitment.Text = $"Gebundene Fläche: {m.ActiveAreaCommitments(ctx).Select(c => c.Area).Sum():N0} m²"; StatusAreaCommitment.Text = $"Gebundene Fläche: {m.ActiveAreaCommitments(ctx).Select(c => c.Area).Sum():N0} m²";
} }
Menu_Member_SendEmail.IsEnabled = m.EmailAddresses.Count > 0; Menu_Contact_Email.IsEnabled = m.EmailAddresses.Count > 0;
Menu_Print_Letterhead.IsEnabled = true; Menu_Contact_Letterhead.IsEnabled = true;
Menu_Show_MemberDataSheet.IsEnabled = true; Menu_MemberDataSheet_Print.IsEnabled = true;
Menu_Print_MemberDataSheet.IsEnabled = true; Menu_MemberDataSheet_Email.IsEnabled = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
Menu_MemberDataSheet_Show.IsEnabled = true;
foreach (var i in Menu_DeliveryConfirmation.Items.Cast<MenuItem>()) {
i.IsEnabled = true;
(i.Items[2] as MenuItem)!.IsEnabled = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
}
FinishInputFilling(); FinishInputFilling();
} }
new protected void ClearInputs(bool validate = false) { new protected void ClearInputs(bool validate = false) {
Menu_Member_SendEmail.IsEnabled = false; Menu_Contact_Email.IsEnabled = false;
Menu_Print_Letterhead.IsEnabled = false; Menu_Contact_Letterhead.IsEnabled = false;
Menu_Show_MemberDataSheet.IsEnabled = false; Menu_MemberDataSheet_Print.IsEnabled = false;
Menu_Print_MemberDataSheet.IsEnabled = false; Menu_MemberDataSheet_Email.IsEnabled = false;
Menu_MemberDataSheet_Show.IsEnabled = false;
foreach (var i in Menu_DeliveryConfirmation.Items.Cast<MenuItem>()) {
i.IsEnabled = false;
}
MemberReferenceButton.IsEnabled = false; MemberReferenceButton.IsEnabled = false;
StatusDeliveriesLastSeason.Text = $"Lieferungen ({Utils.CurrentLastSeason - 1}): -"; StatusDeliveriesLastSeason.Text = $"Lieferungen ({Utils.CurrentLastSeason - 1}): -";
StatusDeliveriesThisSeason.Text = $"Lieferungen ({Utils.CurrentLastSeason}): -"; StatusDeliveriesThisSeason.Text = $"Lieferungen ({Utils.CurrentLastSeason}): -";