Services: Make FillInputs synchronous

This commit is contained in:
2024-09-21 21:46:12 +02:00
parent 9fa9d9fbec
commit 648c406ad2
6 changed files with 52 additions and 39 deletions

View File

@ -32,7 +32,7 @@ namespace Elwig.Services {
vm.StatusAncmtModified = "-"; vm.StatusAncmtModified = "-";
} }
public static async Task FillInputs(this DeliveryAncmtAdminViewModel vm, DeliveryAncmt a) { public static void FillInputs(this DeliveryAncmtAdminViewModel vm, DeliveryAncmt a) {
vm.MgNr = a.MgNr; vm.MgNr = a.MgNr;
vm.DeliverySchedule = (DeliverySchedule?)ControlUtils.GetItemFromSourceWithPk(vm.DeliveryScheduleSource, a.Year, a.DsNr); vm.DeliverySchedule = (DeliverySchedule?)ControlUtils.GetItemFromSourceWithPk(vm.DeliveryScheduleSource, a.Year, a.DsNr);
vm.SortId = a.SortId; vm.SortId = a.SortId;

View File

@ -21,7 +21,7 @@ namespace Elwig.Services {
public static void ClearInputs(this DeliveryScheduleAdminViewModel vm) { public static void ClearInputs(this DeliveryScheduleAdminViewModel vm) {
} }
public static async Task FillInputs(this DeliveryScheduleAdminViewModel vm, DeliverySchedule s) { public static void FillInputs(this DeliveryScheduleAdminViewModel vm, DeliverySchedule s) {
vm.Date = s.Date; vm.Date = s.Date;
vm.Branch = (Branch?)ControlUtils.GetItemFromSourceWithPk(vm.BranchSource, s.ZwstId); vm.Branch = (Branch?)ControlUtils.GetItemFromSourceWithPk(vm.BranchSource, s.ZwstId);
vm.Description = s.Description; vm.Description = s.Description;

View File

@ -51,7 +51,7 @@ namespace Elwig.Services {
vm.Age = "-"; vm.Age = "-";
} }
public static async Task FillInputs(this MemberAdminViewModel vm, Member m) { public static void FillInputs(this MemberAdminViewModel vm, Member m) {
vm.IsMemberSelected = true; vm.IsMemberSelected = true;
vm.MgNrString = $"{m.MgNr}"; vm.MgNrString = $"{m.MgNr}";
vm.PredecessorMgNrString = $"{m.PredecessorMgNr}"; vm.PredecessorMgNrString = $"{m.PredecessorMgNr}";
@ -137,8 +137,19 @@ namespace Elwig.Services {
vm.ContactViaPost = m.ContactViaPost; vm.ContactViaPost = m.ContactViaPost;
vm.ContactViaEmail = m.ContactViaEmail; vm.ContactViaEmail = m.ContactViaEmail;
Dictionary<int, int> deliveries; vm.StatusDeliveriesLastSeasonInfo = "letzte Saison";
using (var ctx = new AppDbContext()) { vm.StatusDeliveriesLastSeason = "-";
vm.StatusDeliveriesLastSeasonToolTip = null;
vm.StatusDeliveriesThisSeasonInfo = "aktuelle Saison";
vm.StatusDeliveriesThisSeason = "-";
vm.StatusDeliveriesThisSeasonToolTip = null;
vm.StatusAreaCommitmentInfo = "aktuelle Saison";
vm.StatusAreaCommitment = "-";
vm.StatusAreaCommitmentToolTip = null;
App.MainDispatcher.BeginInvoke(async () => {
using var ctx = new AppDbContext();
var d1 = ctx.Deliveries.Where(d => d.Year == Utils.CurrentLastSeason - 1 && d.MgNr == m.MgNr); var d1 = ctx.Deliveries.Where(d => d.Year == Utils.CurrentLastSeason - 1 && d.MgNr == m.MgNr);
var (_, d1Grid, _, _) = await DeliveryService.GenerateToolTip(d1.SelectMany(d => d.Parts)); var (_, d1Grid, _, _) = await DeliveryService.GenerateToolTip(d1.SelectMany(d => d.Parts));
vm.StatusDeliveriesLastSeasonInfo = $"{Utils.CurrentLastSeason - 1}"; vm.StatusDeliveriesLastSeasonInfo = $"{Utils.CurrentLastSeason - 1}";
@ -161,17 +172,19 @@ namespace Elwig.Services {
vm.StatusAreaCommitmentInfo = $"{Utils.CurrentLastSeason}"; vm.StatusAreaCommitmentInfo = $"{Utils.CurrentLastSeason}";
vm.StatusAreaCommitment = text; vm.StatusAreaCommitment = text;
vm.StatusAreaCommitmentToolTip = grid; vm.StatusAreaCommitmentToolTip = grid;
});
Dictionary<int, bool> deliveries;
using (var ctx = new AppDbContext()) {
deliveries = ctx.Deliveries deliveries = ctx.Deliveries
.Where(d => d.MgNr == m.MgNr) .Where(d => d.MgNr == m.MgNr)
.SelectMany(d => d.Parts)
.GroupBy(d => d.Year) .GroupBy(d => d.Year)
.ToDictionary(g => g.Key, g => g.Sum(d => d.Weight)); .ToDictionary(g => g.Key, g => g.Any());
} }
vm.MemberHasEmail = m.EmailAddresses.Count > 0; vm.MemberHasEmail = m.EmailAddresses.Count > 0;
vm.MemberCanSendEmail = App.Config.Smtp != null && m.EmailAddresses.Count > 0; vm.MemberCanSendEmail = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
vm.MemberHasDeliveries = Enumerable.Range(0, 9999).Select(i => deliveries.GetValueOrDefault(i, 0) > 0).ToList(); vm.MemberHasDeliveries = Enumerable.Range(0, 9999).Select(i => deliveries.GetValueOrDefault(i, false)).ToList();
} }
public static async Task<(List<string>, IQueryable<Member>, List<string>)> GetFilters(this MemberAdminViewModel vm, AppDbContext ctx) { public static async Task<(List<string>, IQueryable<Member>, List<string>)> GetFilters(this MemberAdminViewModel vm, AppDbContext ctx) {

View File

@ -144,12 +144,12 @@ namespace Elwig.Windows {
} }
} }
private async Task RefreshInputs(bool validate = false) { private void RefreshInputs(bool validate = false) {
ClearInputStates(); ClearInputStates();
if (ViewModel.SelectedDeliveryAncmt is DeliveryAncmt a) { if (ViewModel.SelectedDeliveryAncmt is DeliveryAncmt a) {
EditDeliveryAncmtButton.IsEnabled = true; EditDeliveryAncmtButton.IsEnabled = true;
DeleteDeliveryAncmtButton.IsEnabled = true; DeleteDeliveryAncmtButton.IsEnabled = true;
await FillInputs(a); FillInputs(a);
} else { } else {
EditDeliveryAncmtButton.IsEnabled = false; EditDeliveryAncmtButton.IsEnabled = false;
DeleteDeliveryAncmtButton.IsEnabled = false; DeleteDeliveryAncmtButton.IsEnabled = false;
@ -185,8 +185,8 @@ namespace Elwig.Windows {
await RefreshList(); await RefreshList();
} }
private async void DeliveryAncmtList_SelectionChanged(object sender, RoutedEventArgs evt) { private void DeliveryAncmtList_SelectionChanged(object sender, RoutedEventArgs evt) {
await RefreshInputs(); RefreshInputs();
} }
private async void DeliveryScheduleList_SelectionChanged(object sender, RoutedEventArgs evt) { private async void DeliveryScheduleList_SelectionChanged(object sender, RoutedEventArgs evt) {
@ -361,7 +361,7 @@ namespace Elwig.Windows {
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
FinishInputFilling(); FinishInputFilling();
await RefreshList(); await RefreshList();
await RefreshInputs(); RefreshInputs();
ViewModel.SearchQuery = ""; ViewModel.SearchQuery = "";
ControlUtils.SelectItemWithPk(DeliveryScheduleList, year, dsnr); ControlUtils.SelectItemWithPk(DeliveryScheduleList, year, dsnr);
if (sortid != null) if (sortid != null)
@ -374,9 +374,9 @@ namespace Elwig.Windows {
ResetButton_Click(null, null); ResetButton_Click(null, null);
} }
private async void ResetButton_Click(object? sender, RoutedEventArgs? evt) { private void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
if (IsEditing) { if (IsEditing) {
await RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {
ClearInputs(); ClearInputs();
InitInputs(); InitInputs();
@ -401,15 +401,15 @@ namespace Elwig.Windows {
HideSaveResetCancelButtons(); HideSaveResetCancelButtons();
ShowNewEditDeleteButtons(); ShowNewEditDeleteButtons();
await RefreshInputs(); RefreshInputs();
LockInputs(); LockInputs();
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
} }
private async Task FillInputs(DeliveryAncmt a) { private void FillInputs(DeliveryAncmt a) {
ClearOriginalValues(); ClearOriginalValues();
ClearDefaultValues(); ClearDefaultValues();
await ViewModel.FillInputs(a); ViewModel.FillInputs(a);
FinishInputFilling(); FinishInputFilling();
} }

View File

@ -72,12 +72,12 @@ namespace Elwig.Windows {
DeliveryScheduleList.ScrollIntoView(DeliveryScheduleList.SelectedItem); DeliveryScheduleList.ScrollIntoView(DeliveryScheduleList.SelectedItem);
} }
private async Task RefreshInputs(bool validate = false) { private void RefreshInputs(bool validate = false) {
ClearInputStates(); ClearInputStates();
if (ViewModel.SelectedDeliverySchedule is DeliverySchedule s) { if (ViewModel.SelectedDeliverySchedule is DeliverySchedule s) {
EditDeliveryScheduleButton.IsEnabled = true; EditDeliveryScheduleButton.IsEnabled = true;
DeleteDeliveryScheduleButton.IsEnabled = true; DeleteDeliveryScheduleButton.IsEnabled = true;
await FillInputs(s); FillInputs(s);
} else { } else {
EditDeliveryScheduleButton.IsEnabled = false; EditDeliveryScheduleButton.IsEnabled = false;
DeleteDeliveryScheduleButton.IsEnabled = false; DeleteDeliveryScheduleButton.IsEnabled = false;
@ -113,8 +113,8 @@ namespace Elwig.Windows {
await RefreshList(); await RefreshList();
} }
private async void DeliveryScheduleList_SelectionChanged(object sender, RoutedEventArgs evt) { private void DeliveryScheduleList_SelectionChanged(object sender, RoutedEventArgs evt) {
await RefreshInputs(); RefreshInputs();
} }
private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) { private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) {
@ -218,7 +218,7 @@ namespace Elwig.Windows {
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
FinishInputFilling(); FinishInputFilling();
await RefreshList(); await RefreshList();
await RefreshInputs(); RefreshInputs();
ViewModel.SearchQuery = ""; ViewModel.SearchQuery = "";
} }
@ -228,9 +228,9 @@ namespace Elwig.Windows {
ResetButton_Click(null, null); ResetButton_Click(null, null);
} }
private async void ResetButton_Click(object? sender, RoutedEventArgs? evt) { private void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
if (IsEditing) { if (IsEditing) {
await RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {
ClearInputs(); ClearInputs();
InitInputs(); InitInputs();
@ -238,21 +238,21 @@ namespace Elwig.Windows {
UpdateButtons(); UpdateButtons();
} }
private async void CancelButton_Click(object? sender, RoutedEventArgs? evt) { private void CancelButton_Click(object? sender, RoutedEventArgs? evt) {
IsEditing = false; IsEditing = false;
IsCreating = false; IsCreating = false;
DeliveryScheduleList.IsEnabled = true; DeliveryScheduleList.IsEnabled = true;
HideSaveResetCancelButtons(); HideSaveResetCancelButtons();
ShowNewEditDeleteButtons(); ShowNewEditDeleteButtons();
await RefreshInputs(); RefreshInputs();
LockInputs(); LockInputs();
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
} }
private async Task FillInputs(DeliverySchedule s) { private void FillInputs(DeliverySchedule s) {
ClearOriginalValues(); ClearOriginalValues();
ClearDefaultValues(); ClearDefaultValues();
await ViewModel.FillInputs(s); ViewModel.FillInputs(s);
FinishInputFilling(); FinishInputFilling();
} }

View File

@ -155,12 +155,12 @@ namespace Elwig.Windows {
ViewModel.StatusBusinessShares = $"{members.Sum(m => m.BusinessShares):N0} ({await ctx.Members.SumAsync(m => m.BusinessShares):N0})"; ViewModel.StatusBusinessShares = $"{members.Sum(m => m.BusinessShares):N0} ({await ctx.Members.SumAsync(m => m.BusinessShares):N0})";
} }
private async Task RefreshInputs(bool validate = false) { private void RefreshInputs(bool validate = false) {
ClearInputStates(); ClearInputStates();
if (ViewModel.SelectedMember is Member m) { if (ViewModel.SelectedMember is Member m) {
EditMemberButton.IsEnabled = true; EditMemberButton.IsEnabled = true;
DeleteMemberButton.IsEnabled = true; DeleteMemberButton.IsEnabled = true;
await FillInputs(m); FillInputs(m);
} else { } else {
EditMemberButton.IsEnabled = false; EditMemberButton.IsEnabled = false;
DeleteMemberButton.IsEnabled = false; DeleteMemberButton.IsEnabled = false;
@ -283,8 +283,8 @@ namespace Elwig.Windows {
inputs.Address.Visibility = vis; inputs.Address.Visibility = vis;
} }
private async void MemberList_SelectionChanged(object sender, RoutedEventArgs evt) { private void MemberList_SelectionChanged(object sender, RoutedEventArgs evt) {
await RefreshInputs(); RefreshInputs();
if (MemberList.SelectedItem is Member m) { if (MemberList.SelectedItem is Member m) {
Menu_Export_ExportSelected.IsEnabled = !IsEditing && !IsCreating; Menu_Export_ExportSelected.IsEnabled = !IsEditing && !IsCreating;
Menu_Export_UploadSelected.IsEnabled = !IsEditing && !IsCreating && App.Config.SyncUrl != null; Menu_Export_UploadSelected.IsEnabled = !IsEditing && !IsCreating && App.Config.SyncUrl != null;
@ -409,7 +409,7 @@ namespace Elwig.Windows {
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
FinishInputFilling(); FinishInputFilling();
await RefreshList(); await RefreshList();
await RefreshInputs(); RefreshInputs();
ViewModel.SearchQuery = ""; ViewModel.SearchQuery = "";
if (mgnr is int m) if (mgnr is int m)
FocusMember(m); FocusMember(m);
@ -425,7 +425,7 @@ namespace Elwig.Windows {
ViewModel.TransferPredecessorAreaComs = null; ViewModel.TransferPredecessorAreaComs = null;
ViewModel.CancelAreaComs = null; ViewModel.CancelAreaComs = null;
if (IsEditing) { if (IsEditing) {
await RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {
ClearInputs(); ClearInputs();
await InitInputs(); await InitInputs();
@ -433,7 +433,7 @@ namespace Elwig.Windows {
UpdateButtons(); UpdateButtons();
} }
private async void CancelButton_Click(object sender, RoutedEventArgs evt) { private void CancelButton_Click(object sender, RoutedEventArgs evt) {
IsEditing = false; IsEditing = false;
IsCreating = false; IsCreating = false;
MemberList.IsEnabled = true; MemberList.IsEnabled = true;
@ -441,7 +441,7 @@ namespace Elwig.Windows {
ViewModel.CancelAreaComs = null; ViewModel.CancelAreaComs = null;
HideSaveResetCancelButtons(); HideSaveResetCancelButtons();
ShowNewEditDeleteButtons(); ShowNewEditDeleteButtons();
await RefreshInputs(); RefreshInputs();
LockInputs(); LockInputs();
UpdateContactInfoVisibility(); UpdateContactInfoVisibility();
ViewModel.EnableSearchInputs = true; ViewModel.EnableSearchInputs = true;
@ -686,10 +686,10 @@ namespace Elwig.Windows {
} }
} }
private async Task FillInputs(Member m) { private void FillInputs(Member m) {
ClearOriginalValues(); ClearOriginalValues();
ClearDefaultValues(); ClearDefaultValues();
await ViewModel.FillInputs(m); ViewModel.FillInputs(m);
UpdateContactInfoVisibility(IsEditing || IsCreating); UpdateContactInfoVisibility(IsEditing || IsCreating);
FinishInputFilling(); FinishInputFilling();
} }