[#45] MemberAdminWindow: Add dialog for area commitment cancellation/transfer
Some checks failed
Test / Run tests (push) Failing after 52s

This commit is contained in:
2024-06-10 16:22:28 +02:00
parent 5039c1252a
commit cc0843f183
3 changed files with 139 additions and 14 deletions

View File

@ -1134,7 +1134,7 @@ namespace Elwig.Windows {
var valid = InputLostFocus((TextBox)sender, Validator.CheckPredecessorMgNr);
if (valid && PredecessorMgNrInput.Text != "" && (IsEditing || IsCreating)) {
var mgnr = int.Parse(PredecessorMgNrInput.Text);
if (MemberList.SelectedItem is Member m && m.MgNr == mgnr)
if (MemberList.SelectedItem is not Member m || m.MgNr == mgnr)
return;
using var ctx = new AppDbContext();
var areaComs = await ctx.AreaCommitments
@ -1142,13 +1142,12 @@ namespace Elwig.Windows {
.ToListAsync();
if (areaComs.Count == 0)
return;
var res = MessageBox.Show("Sollen die aktiven Flächenbindungen des angegebenen\n" +
$"Vorgängers übernommen werden? ({areaComs.Sum(c => c.Area)} m²)\n\n" +
"Die Änderungen werden erst beim Speichern übernommen!",
"Aktive Flächenbindungen übernehmen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
if (res != MessageBoxResult.Yes)
var oldMember = (await ctx.Members.FindAsync(mgnr))!;
var d = new AreaComDialog(oldMember.AdministrativeName, m.AdministrativeName, areaComs.Count, areaComs.Sum(c => c.Area));
if (d.ShowDialog() != true)
return;
TransferPredecessorAreaComs = Utils.FollowingSeason;
TransferPredecessorAreaComs = d.SuccessorSeason;
SetOriginalValue(PredecessorMgNrInput, -1); // hack to allow user to save
UpdateButtons();
}
@ -1190,18 +1189,18 @@ namespace Elwig.Windows {
}
private async void ActiveInput_Changed(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m)
return;
if ((IsEditing || IsCreating) && ActiveInput.IsChecked == false && int.TryParse(MgNrInput.Text, out var mgnr)) {
using var ctx = new AppDbContext();
var areaComs = await ctx.AreaCommitments
.Where(c => c.MgNr == mgnr && (c.YearTo == null || c.YearTo >= Utils.FollowingSeason))
.ToListAsync();
if (areaComs.Count >= 0) {
var res = MessageBox.Show($"Sollen die aktiven Flächenbindungen gekündigt werden? ({areaComs.Sum(c => c.Area)} m²)\n" +
"Falls die Flächenbindungen später an ein neues Mitglied\n" +
"übertragen werden sollen bitte \"Nein\" auswählen!\n\n" +
"Die Änderungen werden erst beim Speichern übernommen!",
"Flächenbindungen kündigen", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
CancelAreaComs = res == MessageBoxResult.Yes ? Utils.FollowingSeason - 1 : null;
if (areaComs.Count > 0) {
var d = new AreaComDialog(m.AdministrativeName, areaComs.Count, areaComs.Sum(c => c.Area));
if (d.ShowDialog() == true) {
CancelAreaComs = d.CancelSeason;
}
}
}
CheckBox_Changed(sender, evt);