diff --git a/WGneu/WGneu.csproj.user b/WGneu/WGneu.csproj.user index 8a888a5..c31958b 100644 --- a/WGneu/WGneu.csproj.user +++ b/WGneu/WGneu.csproj.user @@ -10,12 +10,6 @@ Code - - Code - - - Code - Code @@ -27,12 +21,6 @@ Designer - - Designer - - - Designer - Designer diff --git a/WGneu/Windows/MemberListWindow.xaml b/WGneu/Windows/MemberListWindow.xaml index d460329..4d4e1af 100644 --- a/WGneu/Windows/MemberListWindow.xaml +++ b/WGneu/Windows/MemberListWindow.xaml @@ -10,7 +10,8 @@ Title="Mitglieder" Height="500" Width="800" MinHeight="500" MinWidth="800" Loaded="Window_Loaded"> - diff --git a/WGneu/Windows/MemberListWindow.xaml.cs b/WGneu/Windows/MemberListWindow.xaml.cs index 4523261..df41056 100644 --- a/WGneu/Windows/MemberListWindow.xaml.cs +++ b/WGneu/Windows/MemberListWindow.xaml.cs @@ -49,23 +49,35 @@ namespace WGneu.Windows { context.Members.Load(); MemberList.ItemsSource = context.Members.ToList(); + RefreshInputs(); + } + private void RefreshInputs() + { Member m = (Member)MemberList.SelectedItem; if (m != null) { EditMemberButton.IsEnabled = true; + DeleteMemberButton.IsEnabled = true; FillInputs(m); } + else + { + EditMemberButton.IsEnabled = false; + DeleteMemberButton.IsEnabled = false; + ClearInputs(); + } + } + + private void InitInputs() + { + ClearInputs(); + MgNrInput.Text = NextMgNr().ToString(); } private void MemberList_SelectionChanged(object sender, SelectionChangedEventArgs e) { - Member m = (Member) MemberList.SelectedItem; - if (m == null) - return; - - FillInputs(m); - EditMemberButton.IsEnabled = true; + RefreshInputs(); } private void PlzInput_TextChanged(object sender, RoutedEventArgs e) @@ -83,12 +95,7 @@ namespace WGneu.Windows { isCreating = true; MemberList.IsEnabled = false; - - // TODO fill input fields - - ClearInputs(); - MgNrInput.Text = (context.Members.Select(m => m.MgNr).Max() + 1).ToString(); - + InitInputs(); HideNewEditDeleteButtons(); ShowSaveResetCancelButtons(); UnlockInputs(); @@ -109,46 +116,50 @@ namespace WGneu.Windows private void DeleteMemberButton_Click(object sender, RoutedEventArgs e) { - // TODO delete member button + Member m = (Member)MemberList.SelectedItem; + if (m == null) return; + + var r = MessageBox.Show( + $"Soll das Mitglied {m.FamilyName} {m.GivenName} ({m.MgNr}) wirklich unwiderruflich gelöscht werden?", + "Mitglied löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); + if (r == MessageBoxResult.Yes) + { + context.Remove(m); + context.SaveChanges(); + RefreshMemberList(); + } } private void SaveButton_Click(object sender, RoutedEventArgs e) { // TODO only allow to click button, if values were checked - int originalMgNr = -1; Member? m = null; if (isEditing) - { m = (Member)MemberList.SelectedItem; - originalMgNr = m.MgNr; - } else if (isCreating) - { m = new(); - } - m.MgNr = int.Parse(MgNrInput.Text); + int newMgNr = int.Parse(MgNrInput.Text); m.GivenName = GivenNameInput.Text; m.FamilyName = FamilyNameInput.Text; m.ZwstId = ((Branch)BranchInput.SelectedItem).ZwstId; m.CountryCode = "AT"; m.PostalDestId = ((AT_Plz)OrtInput.SelectedItem).Id; + m.PostalDest = context.PostalDestinations.Find(m.CountryCode, m.PostalDestId); m.Address = AddressInput.Text; m.DefaultKgNr = ((AT_Kg)DefaultKgInput.SelectedItem).KgNr; try { if (isEditing) - { context.Update(m); - } else if (isCreating) - { context.Add(m); - } - context.SaveChanges(); + + if (newMgNr != m.MgNr) + context.Database.ExecuteSql($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {m.MgNr}"); } catch (Exception exc) { @@ -156,21 +167,22 @@ namespace WGneu.Windows "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message.ToString(), "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error); } - finally - { - isEditing = false; - isCreating = false; - MemberList.IsEnabled = true; - HideSaveResetCancelButtons(); - ShowNewEditDeleteButtons(); - LockInputs(); - RefreshMemberList(); - } + + isEditing = false; + isCreating = false; + MemberList.IsEnabled = true; + HideSaveResetCancelButtons(); + ShowNewEditDeleteButtons(); + LockInputs(); + RefreshMemberList(); } private void ResetButton_Click(object sender, RoutedEventArgs e) { - // TODO reset button + if (isEditing) + RefreshInputs(); + else if (isCreating) + InitInputs(); } private void CancelButton_Click(object sender, RoutedEventArgs e) @@ -180,9 +192,17 @@ namespace WGneu.Windows MemberList.IsEnabled = true; HideSaveResetCancelButtons(); ShowNewEditDeleteButtons(); + RefreshInputs(); LockInputs(); } + private int NextMgNr() + { + int c = context.Members.Select(m => m.MgNr).Min(); + context.Members.OrderBy(m => m.MgNr).Select(m => m.MgNr).ToList().ForEach(a => { if (a <= c + 100) c = a; }); + return c + 1; + } + private void ShowSaveResetCancelButtons() { SaveButton.IsEnabled = true; @@ -207,7 +227,7 @@ namespace WGneu.Windows { NewMemberButton.IsEnabled = true; EditMemberButton.IsEnabled = MemberList.SelectedItem != null; - DeleteMemberButton.IsEnabled = true; + DeleteMemberButton.IsEnabled = MemberList.SelectedItem != null; NewMemberButton.Visibility = Visibility.Visible; EditMemberButton.Visibility = Visibility.Visible; DeleteMemberButton.Visibility = Visibility.Visible; @@ -256,14 +276,11 @@ namespace WGneu.Windows DefaultKgInput.SelectedItem = m.DefaultKg; AddressInput.Text = m.Address; - // TODO PostalDest may be null after creation? AT_Plz? p = m.PostalDest.Plz(context); if (p != null) { PlzInput.Text = p.Plz.ToString(); - - var o = p.Orte(context); - OrtInput.ItemsSource = o; + OrtInput.ItemsSource = p.Orte(context); OrtInput.SelectedItem = p; } else