[#41] MemberAdminWindow: Add feature to cancel area commitments on member non-active
This commit is contained in:
@ -410,7 +410,7 @@
|
|||||||
TextChanged="TextBox_TextChanged"/>
|
TextChanged="TextBox_TextChanged"/>
|
||||||
|
|
||||||
<CheckBox x:Name="ActiveInput" Content="Aktiv" IsEnabled="False"
|
<CheckBox x:Name="ActiveInput" Content="Aktiv" IsEnabled="False"
|
||||||
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"
|
Checked="ActiveInput_Changed" Unchecked="ActiveInput_Changed"
|
||||||
Grid.Column="2" HorizontalAlignment="Left" Margin="10,15,0,0" VerticalAlignment="Top" IsChecked="False"/>
|
Grid.Column="2" HorizontalAlignment="Left" Margin="10,15,0,0" VerticalAlignment="Top" IsChecked="False"/>
|
||||||
|
|
||||||
<CheckBox x:Name="VollLieferantInput" Content="Volllieferant" IsEnabled="False"
|
<CheckBox x:Name="VollLieferantInput" Content="Volllieferant" IsEnabled="False"
|
||||||
|
@ -16,6 +16,7 @@ namespace Elwig.Windows {
|
|||||||
public partial class MemberAdminWindow : AdministrationWindow {
|
public partial class MemberAdminWindow : AdministrationWindow {
|
||||||
|
|
||||||
protected bool TransferPredecessorAreaComs = false;
|
protected bool TransferPredecessorAreaComs = false;
|
||||||
|
protected bool CancelAreaComs = false;
|
||||||
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;
|
||||||
@ -341,6 +342,7 @@ namespace Elwig.Windows {
|
|||||||
MemberList.IsEnabled = false;
|
MemberList.IsEnabled = false;
|
||||||
MemberList.SelectedItem = null;
|
MemberList.SelectedItem = null;
|
||||||
TransferPredecessorAreaComs = false;
|
TransferPredecessorAreaComs = false;
|
||||||
|
CancelAreaComs = false;
|
||||||
HideNewEditDeleteButtons();
|
HideNewEditDeleteButtons();
|
||||||
ShowSaveResetCancelButtons();
|
ShowSaveResetCancelButtons();
|
||||||
UnlockInputs();
|
UnlockInputs();
|
||||||
@ -356,6 +358,7 @@ namespace Elwig.Windows {
|
|||||||
IsEditing = true;
|
IsEditing = true;
|
||||||
MemberList.IsEnabled = false;
|
MemberList.IsEnabled = false;
|
||||||
TransferPredecessorAreaComs = false;
|
TransferPredecessorAreaComs = false;
|
||||||
|
CancelAreaComs = false;
|
||||||
|
|
||||||
HideNewEditDeleteButtons();
|
HideNewEditDeleteButtons();
|
||||||
ShowSaveResetCancelButtons();
|
ShowSaveResetCancelButtons();
|
||||||
@ -407,6 +410,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private void ResetButton_Click(object sender, RoutedEventArgs evt) {
|
private void ResetButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
TransferPredecessorAreaComs = false;
|
TransferPredecessorAreaComs = false;
|
||||||
|
CancelAreaComs = false;
|
||||||
if (IsEditing) {
|
if (IsEditing) {
|
||||||
RefreshInputs();
|
RefreshInputs();
|
||||||
} else if (IsCreating) {
|
} else if (IsCreating) {
|
||||||
@ -421,6 +425,7 @@ namespace Elwig.Windows {
|
|||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
MemberList.IsEnabled = true;
|
MemberList.IsEnabled = true;
|
||||||
TransferPredecessorAreaComs = false;
|
TransferPredecessorAreaComs = false;
|
||||||
|
CancelAreaComs = false;
|
||||||
HideSaveResetCancelButtons();
|
HideSaveResetCancelButtons();
|
||||||
ShowNewEditDeleteButtons();
|
ShowNewEditDeleteButtons();
|
||||||
RefreshInputs();
|
RefreshInputs();
|
||||||
@ -684,6 +689,19 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
TransferPredecessorAreaComs = false;
|
TransferPredecessorAreaComs = false;
|
||||||
|
|
||||||
|
if (CancelAreaComs) {
|
||||||
|
var year = Utils.FollowingSeason;
|
||||||
|
var areaComs = await ctx.AreaCommitments
|
||||||
|
.Where(c => c.MgNr == m.MgNr && (c.YearTo == null || c.YearTo >= year))
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
foreach (var ac in areaComs)
|
||||||
|
ac.YearTo = year - 1;
|
||||||
|
ctx.UpdateRange(areaComs);
|
||||||
|
await ctx.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
CancelAreaComs = false;
|
||||||
|
|
||||||
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}");
|
||||||
}
|
}
|
||||||
@ -844,12 +862,14 @@ namespace Elwig.Windows {
|
|||||||
if (MemberList.SelectedItem is Member m && m.MgNr == mgnr)
|
if (MemberList.SelectedItem is Member m && m.MgNr == mgnr)
|
||||||
return;
|
return;
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var areaComs = await ctx.AreaCommitments.Where(c => c.MgNr == mgnr && c.YearTo == null).ToListAsync();
|
var areaComs = await ctx.AreaCommitments
|
||||||
|
.Where(c => c.MgNr == mgnr && (c.YearTo == null || c.YearTo >= Utils.FollowingSeason))
|
||||||
|
.ToListAsync();
|
||||||
if (areaComs.Count == 0)
|
if (areaComs.Count == 0)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show("Sollen die aktiven Flächenbindungen des angegebenen\n" +
|
var res = MessageBox.Show("Sollen die aktiven Flächenbindungen des angegebenen\n" +
|
||||||
$"Vorgängers übernommen werden? ({areaComs.Sum(c => c.Area)} m²)\n\n" +
|
$"Vorgängers übernommen werden? ({areaComs.Sum(c => c.Area)} m²)\n\n" +
|
||||||
"Die Flächenbindungen werden erst\nnach dem Speichern übernommen!",
|
"Die Änderungen werden erst beim Speichern übernommen!",
|
||||||
"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;
|
||||||
@ -893,5 +913,23 @@ namespace Elwig.Windows {
|
|||||||
if (MemberList.SelectedItem is not Member m || m.PredecessorMgNr == null) return;
|
if (MemberList.SelectedItem is not Member m || m.PredecessorMgNr == null) return;
|
||||||
FocusMember((int)m.PredecessorMgNr);
|
FocusMember((int)m.PredecessorMgNr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void ActiveInput_Changed(object sender, RoutedEventArgs evt) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CheckBox_Changed(sender, evt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user