MemberAdminWindow: Save season instead of bool for cancelling or transfering area commitments

This commit is contained in:
2024-05-03 10:24:01 +02:00
parent 35e5a1dfff
commit eb4562dceb

View File

@ -19,8 +19,8 @@ using Elwig.Helpers.Billing;
namespace Elwig.Windows { namespace Elwig.Windows {
public partial class MemberAdminWindow : AdministrationWindow { public partial class MemberAdminWindow : AdministrationWindow {
protected bool TransferPredecessorAreaComs = false; protected int? TransferPredecessorAreaComs = null;
protected bool CancelAreaComs = false; protected int? CancelAreaComs = null;
protected List<string> TextFilter = []; protected List<string> TextFilter = [];
private readonly (ComboBox Type, TextBox Number, TextBox Comment)[] PhoneNrInputs; private readonly (ComboBox Type, TextBox Number, TextBox Comment)[] PhoneNrInputs;
@ -412,8 +412,8 @@ namespace Elwig.Windows {
IsCreating = true; IsCreating = true;
MemberList.IsEnabled = false; MemberList.IsEnabled = false;
MemberList.SelectedItem = null; MemberList.SelectedItem = null;
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = null;
CancelAreaComs = false; CancelAreaComs = null;
HideNewEditDeleteButtons(); HideNewEditDeleteButtons();
ShowSaveResetCancelButtons(); ShowSaveResetCancelButtons();
UnlockInputs(); UnlockInputs();
@ -434,8 +434,8 @@ namespace Elwig.Windows {
IsEditing = true; IsEditing = true;
MemberList.IsEnabled = false; MemberList.IsEnabled = false;
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = null;
CancelAreaComs = false; CancelAreaComs = null;
HideNewEditDeleteButtons(); HideNewEditDeleteButtons();
ShowSaveResetCancelButtons(); ShowSaveResetCancelButtons();
@ -509,8 +509,8 @@ namespace Elwig.Windows {
} }
private void ResetButton_Click(object? sender, RoutedEventArgs? evt) { private void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = null;
CancelAreaComs = false; CancelAreaComs = null;
if (IsEditing) { if (IsEditing) {
RefreshInputs(); RefreshInputs();
} else if (IsCreating) { } else if (IsCreating) {
@ -524,8 +524,8 @@ namespace Elwig.Windows {
IsEditing = false; IsEditing = false;
IsCreating = false; IsCreating = false;
MemberList.IsEnabled = true; MemberList.IsEnabled = true;
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = null;
CancelAreaComs = false; CancelAreaComs = null;
HideSaveResetCancelButtons(); HideSaveResetCancelButtons();
ShowNewEditDeleteButtons(); ShowNewEditDeleteButtons();
RefreshInputs(); RefreshInputs();
@ -909,8 +909,7 @@ namespace Elwig.Windows {
await ctx.SaveChangesAsync(); await ctx.SaveChangesAsync();
if (TransferPredecessorAreaComs && m.PredecessorMgNr is int predecessor) { if (TransferPredecessorAreaComs is int year && m.PredecessorMgNr is int predecessor) {
var year = Utils.FollowingSeason;
var areaComs = await ctx.AreaCommitments var areaComs = await ctx.AreaCommitments
.Where(c => c.MgNr == predecessor && (c.YearTo == null || c.YearTo >= year)) .Where(c => c.MgNr == predecessor && (c.YearTo == null || c.YearTo >= year))
.ToListAsync(); .ToListAsync();
@ -934,20 +933,19 @@ namespace Elwig.Windows {
ctx.UpdateRange(areaComs); ctx.UpdateRange(areaComs);
await ctx.SaveChangesAsync(); await ctx.SaveChangesAsync();
} }
TransferPredecessorAreaComs = false; TransferPredecessorAreaComs = null;
if (CancelAreaComs) { if (CancelAreaComs is int yearTo) {
var year = Utils.FollowingSeason;
var areaComs = await ctx.AreaCommitments var areaComs = await ctx.AreaCommitments
.Where(c => c.MgNr == m.MgNr && (c.YearTo == null || c.YearTo >= year)) .Where(c => c.MgNr == m.MgNr && (c.YearTo == null || c.YearTo > yearTo))
.ToListAsync(); .ToListAsync();
foreach (var ac in areaComs) foreach (var ac in areaComs)
ac.YearTo = year - 1; ac.YearTo = yearTo;
ctx.UpdateRange(areaComs); ctx.UpdateRange(areaComs);
await ctx.SaveChangesAsync(); await ctx.SaveChangesAsync();
} }
CancelAreaComs = false; CancelAreaComs = null;
if (newMgNr != m.MgNr) { if (newMgNr != m.MgNr) {
await ctx.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {oldMgNr}"); await ctx.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {oldMgNr}");
@ -1131,7 +1129,7 @@ namespace Elwig.Windows {
"Aktive Flächenbindungen übernehmen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); "Aktive Flächenbindungen übernehmen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
if (res != MessageBoxResult.Yes) if (res != MessageBoxResult.Yes)
return; return;
TransferPredecessorAreaComs = true; TransferPredecessorAreaComs = Utils.FollowingSeason;
SetOriginalValue(PredecessorMgNrInput, -1); // hack to allow user to save SetOriginalValue(PredecessorMgNrInput, -1); // hack to allow user to save
UpdateButtons(); UpdateButtons();
} }
@ -1184,7 +1182,7 @@ namespace Elwig.Windows {
"übertragen werden sollen bitte \"Nein\" auswählen!\n\n" + "übertragen werden sollen bitte \"Nein\" auswählen!\n\n" +
"Die Änderungen werden erst beim Speichern übernommen!", "Die Änderungen werden erst beim Speichern übernommen!",
"Flächenbindungen kündigen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No); "Flächenbindungen kündigen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
CancelAreaComs = res == MessageBoxResult.Yes; CancelAreaComs = res == MessageBoxResult.Yes ? Utils.FollowingSeason - 1 : null;
} }
} }
CheckBox_Changed(sender, evt); CheckBox_Changed(sender, evt);