AreaComAdminWindow: Allow users to create new reeds inline

This commit is contained in:
2023-11-16 17:42:01 +01:00
parent 077e03ab2f
commit f4ec95cdca
12 changed files with 128 additions and 22 deletions

View File

@ -12,6 +12,9 @@ using Xceed.Wpf.Toolkit.Primitives;
namespace Elwig.Windows {
public partial class AreaComAdminWindow : AdministrationWindow {
public int MgNr => Member.MgNr;
private readonly Member Member;
private List<string> TextFilter = new();
@ -165,6 +168,7 @@ namespace Elwig.Windows {
FbNrInput.Text = (await Context.NextFbNr()).ToString();
MgNrInput.Text = Member.MgNr.ToString();
YearFromInput.Text = DateTime.Now.Year.ToString();
SetDefaultValue(FbNrInput);
ValidateRequiredInputs();
@ -231,11 +235,21 @@ namespace Elwig.Windows {
EntityEntry<AreaCom>? tr = null;
try {
if (RdInput.SelectedItem is WbRd wbRd) {
a.RdNr = wbRd.RdNr;
var e = Context.Entry(wbRd);
if (e.State == EntityState.Detached) {
await Context.AddAsync(wbRd);
}
} else {
a.RdNr = null;
}
if (IsEditing) {
tr = Context.Update(a);
} else if (IsCreating) {
a.FbNr = newFbNr;
tr = (await Context.AddAsync(a));
tr = await Context.AddAsync(a);
} else {
throw new Exception();
}
@ -387,6 +401,19 @@ namespace Elwig.Windows {
ComboBox_SelectionChanged(sender, evt);
}
private void RdInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
RdAddButton.IsEnabled = RdInput.SelectedIndex == -1;
}
private async void RdAddButton_Click(object sender, RoutedEventArgs evt) {
if (KgInput.SelectedItem is not AT_Kg kg) return;
string name = RdInput.Text.Trim();
if (name.Length == 0) return;
var s = RdInput.ItemsSource.Cast<object?>();
RdInput.ItemsSource = s.Append(new WbRd() { KgNr = kg.KgNr, Name = name, RdNr = await Context.NextRdNr(kg.KgNr)});
RdInput.SelectedIndex = s.Count();
}
protected void InputTextChanged(TextBox input, Func<TextBox, bool, AppDbContext, AreaCom?, ValidationResult> checker) {
InputTextChanged(input, checker(input, SenderIsRequired(input), Context, (AreaCom)AreaCommitmentList.SelectedItem));
}