Add proper validation to AreaCommAdminWindow
This commit is contained in:
@ -59,7 +59,6 @@
|
|||||||
<ColumnDefinition Width="125"/>
|
<ColumnDefinition Width="125"/>
|
||||||
<ColumnDefinition Width="125"/>
|
<ColumnDefinition Width="125"/>
|
||||||
<ColumnDefinition Width="125"/>
|
<ColumnDefinition Width="125"/>
|
||||||
<ColumnDefinition Width="*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<DataGrid x:Name="ContractList" AutoGenerateColumns="False" HeadersVisibility="Column" IsReadOnly="True" GridLinesVisibility="None" SelectionMode="Single"
|
<DataGrid x:Name="ContractList" AutoGenerateColumns="False" HeadersVisibility="Column" IsReadOnly="True" GridLinesVisibility="None" SelectionMode="Single"
|
||||||
@ -88,14 +87,14 @@
|
|||||||
<Button x:Name="NewAreaCommitmentButton" Content="Neu" Click="NewAreaCommitmentButton_Click" IsEnabled="False"
|
<Button x:Name="NewAreaCommitmentButton" Content="Neu" Click="NewAreaCommitmentButton_Click" IsEnabled="False"
|
||||||
HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5,10,0,10" Width="110" Grid.Column="2"/>
|
HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5,10,0,10" Width="110" Grid.Column="2"/>
|
||||||
<Button x:Name="EditAreaCommitmentButton" Content="Bearbeiten" Click="EditAreaCommitmentButton_Click" IsEnabled="False"
|
<Button x:Name="EditAreaCommitmentButton" Content="Bearbeiten" Click="EditAreaCommitmentButton_Click" IsEnabled="False"
|
||||||
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,10,0,10" Width="110" Grid.Column="3"/>
|
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="-5,10,0,10" Width="110" Grid.Column="3"/>
|
||||||
<Button x:Name="DeleteAreaCommitmentButton" Content="Löschen" Click="DeleteAreaCommitmentButton_Click" IsEnabled="False"
|
<Button x:Name="DeleteAreaCommitmentButton" Content="Löschen" Click="DeleteAreaCommitmentButton_Click" IsEnabled="False"
|
||||||
HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,10,10" Width="110" Grid.Column="4"/>
|
HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,10,10" Width="110" Grid.Column="4"/>
|
||||||
|
|
||||||
<Button x:Name="AreaCommitmentSaveButton" Content="Speichern" Click="AreaCommitmentSaveButton_Click" IsEnabled="False" Visibility="Hidden"
|
<Button x:Name="AreaCommitmentSaveButton" Content="Speichern" Click="AreaCommitmentSaveButton_Click" IsEnabled="False" Visibility="Hidden"
|
||||||
HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,10,0,10" Width="110" Grid.Column="2"/>
|
HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,10,0,10" Width="110" Grid.Column="2"/>
|
||||||
<Button x:Name="AreaCommitmentResetButton" Content="Zurücksetzen" Click="AreaCommitmentResetButton_Click" IsEnabled="False" Visibility="Hidden"
|
<Button x:Name="AreaCommitmentResetButton" Content="Zurücksetzen" Click="AreaCommitmentResetButton_Click" IsEnabled="False" Visibility="Hidden"
|
||||||
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,10,0,10" Width="110" Grid.Column="3"/>
|
HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="-5,10,0,10" Width="110" Grid.Column="3"/>
|
||||||
<Button x:Name="AreaCommitmentCancelButton" Content="Abbrechen" Click="AreaCommitmentCancelButton_Click" IsEnabled="False" Visibility="Hidden" IsCancel="True"
|
<Button x:Name="AreaCommitmentCancelButton" Content="Abbrechen" Click="AreaCommitmentCancelButton_Click" IsEnabled="False" Visibility="Hidden" IsCancel="True"
|
||||||
HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,10,10" Width="110" Grid.Column="4"/>
|
HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,10,10" Width="110" Grid.Column="4"/>
|
||||||
|
|
||||||
@ -115,22 +114,25 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="60"/>
|
<ColumnDefinition Width="60"/>
|
||||||
<ColumnDefinition Width="1*"/>
|
<ColumnDefinition Width="70"/>
|
||||||
<ColumnDefinition Width="50"/>
|
<ColumnDefinition Width="50"/>
|
||||||
<ColumnDefinition Width="2*"/>
|
<ColumnDefinition Width="100"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Label Content="VNr.:" Margin="10,10,0,0" Grid.Column="0"/>
|
<Label Content="VNr.:" Margin="10,10,0,0" Grid.Column="0"/>
|
||||||
<TextBox x:Name="VNrInput" Margin="0,10,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="VNrInput" Margin="0,10,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"
|
||||||
|
TextChanged="VNrInput_TextChanged" LostFocus="VNrInput_LostFocus"/>
|
||||||
|
|
||||||
<Label Content="MgNr.:" Margin="10,40,0,0" Grid.Column="0"/>
|
<Label Content="MgNr.:" Margin="10,40,0,0" Grid.Column="0"/>
|
||||||
<TextBox x:Name="MgNrInput" Margin="0,40,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="MgNrInput" Margin="0,40,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
|
||||||
|
|
||||||
<Label Content="Von:" Margin="10,10,0,0" Grid.Column="2"/>
|
<Label Content="Von:" Margin="10,10,0,0" Grid.Column="2"/>
|
||||||
<TextBox x:Name="YearFromInput" Margin="0,10,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="YearFromInput" Margin="0,10,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"
|
||||||
|
TextChanged="YearFromInput_TextChanged"/>
|
||||||
|
|
||||||
<Label Content="Bis:" Margin="10,40,0,0" Grid.Column="2"/>
|
<Label Content="Bis:" Margin="10,40,0,0" Grid.Column="2"/>
|
||||||
<TextBox x:Name="YearToInput" Margin="0,40,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="YearToInput" Margin="0,40,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"
|
||||||
|
TextChanged="YearToInput_TextChanged"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
@ -143,7 +145,7 @@
|
|||||||
|
|
||||||
<Label Content="Gemeinde:" Margin="10,10,0,0" Grid.Column="0"/>
|
<Label Content="Gemeinde:" Margin="10,10,0,0" Grid.Column="0"/>
|
||||||
<ComboBox x:Name="KgInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
|
<ComboBox x:Name="KgInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
|
||||||
Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
|
Width="200" HorizontalAlignment="Left" SelectionChanged="KgInput_SelectionChanged"
|
||||||
Margin="0,10,10,0" Grid.Column="1"/>
|
Margin="0,10,10,0" Grid.Column="1"/>
|
||||||
|
|
||||||
<Label Content="Ried:" Margin="10,40,0,0" Grid.Column="0"/>
|
<Label Content="Ried:" Margin="10,40,0,0" Grid.Column="0"/>
|
||||||
@ -152,10 +154,12 @@
|
|||||||
Margin="0,40,0,0" Grid.Column="1"/>
|
Margin="0,40,0,0" Grid.Column="1"/>
|
||||||
|
|
||||||
<Label Content="Parzelle:" Margin="10,70,0,0" Grid.Column="0"/>
|
<Label Content="Parzelle:" Margin="10,70,0,0" Grid.Column="0"/>
|
||||||
<TextBox x:Name="GstNrInput" Margin="0,70,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="GstNrInput" Margin="0,70,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"
|
||||||
|
TextChanged="GstNrInput_TextChanged" LostFocus="GstNrInput_LostFocus"/>
|
||||||
|
|
||||||
<Label Content="Fläche (m²):" Margin="10,100,0,0" Grid.Column="0"/>
|
<Label Content="Fläche (m²):" Margin="10,100,0,0" Grid.Column="0"/>
|
||||||
<TextBox x:Name="AreaInput" Margin="0,100,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
|
<TextBox x:Name="AreaInput" Margin="0,100,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"
|
||||||
|
TextChanged="AreaInput_TextChanged"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
@ -8,6 +8,7 @@ using Elwig.Models;
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public partial class AreaCommAdminWindow : AdministrationWindow {
|
public partial class AreaCommAdminWindow : AdministrationWindow {
|
||||||
@ -20,22 +21,20 @@ namespace Elwig.Windows {
|
|||||||
this.member = member;
|
this.member = member;
|
||||||
Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig";
|
Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig";
|
||||||
ExemptInputs = new Control[] {
|
ExemptInputs = new Control[] {
|
||||||
ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton,
|
MgNrInput, ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton,
|
||||||
ContractSaveButton, ContractCancelButton, NewAreaCommitmentButton,
|
ContractSaveButton, ContractCancelButton, NewAreaCommitmentButton,
|
||||||
EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
|
EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
|
||||||
AreaCommitmentResetButton, AreaCommitmentCancelButton
|
AreaCommitmentResetButton, AreaCommitmentCancelButton
|
||||||
};
|
};
|
||||||
RequiredInputs = new Control[] {
|
RequiredInputs = new Control[] {
|
||||||
VNrInput, MgNrInput, YearFromInput, YearToInput, KgInput,
|
VNrInput, YearFromInput, KgInput,
|
||||||
GstNrInput, AreaInput, SortInput, CultInput
|
GstNrInput, AreaInput, SortInput, CultInput
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Window_Loaded(object sender, RoutedEventArgs e) {
|
private async void Window_Loaded(object sender, RoutedEventArgs e) {
|
||||||
await RefreshContractList();
|
await RefreshContractList();
|
||||||
//TODO Sources von Ried sollten sich auf Gemeinde beziehen
|
|
||||||
KgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList();
|
KgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList();
|
||||||
RdInput.ItemsSource = Context.WbRde.OrderBy(r => r.Name).ToList();
|
|
||||||
SortInput.ItemsSource = Context.WineVarieties.OrderBy(s => s.Name).ToList();
|
SortInput.ItemsSource = Context.WineVarieties.OrderBy(s => s.Name).ToList();
|
||||||
AttrInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
|
AttrInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
|
||||||
CultInput.ItemsSource = Context.WineCultivations.OrderBy(c => c.Name).ToList();
|
CultInput.ItemsSource = Context.WineCultivations.OrderBy(c => c.Name).ToList();
|
||||||
@ -58,6 +57,7 @@ namespace Elwig.Windows {
|
|||||||
if (contracts.Count == 1)
|
if (contracts.Count == 1)
|
||||||
ContractList.SelectedIndex = 0;
|
ContractList.SelectedIndex = 0;
|
||||||
|
|
||||||
|
//TODO notwendig?
|
||||||
await RefreshAreaCommitmentList();
|
await RefreshAreaCommitmentList();
|
||||||
RefreshInputs();
|
RefreshInputs();
|
||||||
}
|
}
|
||||||
@ -75,6 +75,7 @@ namespace Elwig.Windows {
|
|||||||
AreaCommitmentList.ItemsSource = commitments;
|
AreaCommitmentList.ItemsSource = commitments;
|
||||||
if (commitments.Count == 1)
|
if (commitments.Count == 1)
|
||||||
AreaCommitmentList.SelectedIndex = 0;
|
AreaCommitmentList.SelectedIndex = 0;
|
||||||
|
RefreshInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshInputs(bool validate = false) {
|
private void RefreshInputs(bool validate = false) {
|
||||||
@ -98,6 +99,7 @@ namespace Elwig.Windows {
|
|||||||
EditAreaCommitmentButton.IsEnabled = false;
|
EditAreaCommitmentButton.IsEnabled = false;
|
||||||
DeleteAreaCommitmentButton.IsEnabled = false;
|
DeleteAreaCommitmentButton.IsEnabled = false;
|
||||||
ClearInputs();
|
ClearInputs();
|
||||||
|
MgNrInput.Text = "";
|
||||||
}
|
}
|
||||||
if (!validate) ClearInputStates();
|
if (!validate) ClearInputStates();
|
||||||
GC.Collect();
|
GC.Collect();
|
||||||
@ -132,6 +134,9 @@ namespace Elwig.Windows {
|
|||||||
ShowAreaCommitmentSaveResetCancelButtons();
|
ShowAreaCommitmentSaveResetCancelButtons();
|
||||||
DisableContractNewDeleteButtons();
|
DisableContractNewDeleteButtons();
|
||||||
UnlockInputs();
|
UnlockInputs();
|
||||||
|
VNrInput.IsReadOnly = true;
|
||||||
|
YearFromInput.IsReadOnly = true;
|
||||||
|
YearToInput.IsReadOnly = true;
|
||||||
InitInputs();
|
InitInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,9 +152,6 @@ namespace Elwig.Windows {
|
|||||||
ShowAreaCommitmentSaveResetCancelButtons();
|
ShowAreaCommitmentSaveResetCancelButtons();
|
||||||
DisableContractNewDeleteButtons();
|
DisableContractNewDeleteButtons();
|
||||||
UnlockInputs();
|
UnlockInputs();
|
||||||
//TODO schöner?
|
|
||||||
VNrInput.IsReadOnly = true;
|
|
||||||
MgNrInput.IsReadOnly = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
|
private async void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -176,16 +178,6 @@ namespace Elwig.Windows {
|
|||||||
ShowContractSaveCancelButtons();
|
ShowContractSaveCancelButtons();
|
||||||
DisableAreaCommitmentNewEditDeleteButtons();
|
DisableAreaCommitmentNewEditDeleteButtons();
|
||||||
UnlockInputs();
|
UnlockInputs();
|
||||||
//TODO schöner?
|
|
||||||
KgInput.IsEnabled = false;
|
|
||||||
RdInput.IsEnabled = false;
|
|
||||||
GstNrInput.IsReadOnly = true;
|
|
||||||
GstNrInput.IsEnabled = false;
|
|
||||||
AreaInput.IsReadOnly = true;
|
|
||||||
AreaInput.IsEnabled = false;
|
|
||||||
SortInput.IsEnabled = false;
|
|
||||||
AttrInput.IsEnabled = false;
|
|
||||||
CultInput.IsEnabled = false;
|
|
||||||
InitInputs();
|
InitInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,31 +195,70 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) {
|
private async Task<Contract> UpdateContract(Contract c) {
|
||||||
AreaCommitment? a = new();
|
int newVNr = int.Parse(VNrInput.Text);
|
||||||
if (IsEditing)
|
c.MgNr = int.Parse(MgNrInput.Text);
|
||||||
a = (AreaCommitment)AreaCommitmentList.SelectedItem;
|
c.YearFrom = int.Parse(YearFromInput.Text);
|
||||||
else if (IsCreating)
|
c.YearTo = (YearToInput.Text == "") ? null : int.Parse(YearToInput.Text);
|
||||||
a = new();
|
|
||||||
|
|
||||||
//TODO
|
EntityEntry<Contract>? tr = null;
|
||||||
|
try {
|
||||||
|
if (IsEditing) {
|
||||||
|
tr = Context.Update(c);
|
||||||
|
} else if (IsCreating) {
|
||||||
|
c.VNr = newVNr;
|
||||||
|
tr = (await Context.AddAsync(c));
|
||||||
|
}
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
|
||||||
|
if (newVNr != c.VNr) {
|
||||||
|
await Context.Database.ExecuteSqlAsync($"UPDATE contract SET vnr = {newVNr} WHERE mgnr = {c.VNr}");
|
||||||
|
await Context.Contracts.LoadAsync();
|
||||||
|
c = await Context.Contracts.FindAsync(newVNr);
|
||||||
|
}
|
||||||
|
} catch (Exception exc) {
|
||||||
|
if (tr != null) await tr.ReloadAsync();
|
||||||
|
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||||
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
|
MessageBox.Show(str, "Vertrag aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<AreaCommitment> UpdateaAreaCommitment(AreaCommitment a) {
|
||||||
|
a.VNr = int.Parse(VNrInput.Text);
|
||||||
a.KgNr = ((AT_Kg)KgInput.SelectedItem).KgNr;
|
a.KgNr = ((AT_Kg)KgInput.SelectedItem).KgNr;
|
||||||
a.RdNr = ((WbRd)RdInput.SelectedItem).RdNr;
|
a.RdNr = ((WbRd)RdInput.SelectedItem).RdNr;
|
||||||
a.GstNr = GstNrInput.Text;
|
a.GstNr = GstNrInput.Text;
|
||||||
|
a.Area = int.Parse(AreaInput.Text);
|
||||||
|
a.SortId = ((WineVar)SortInput.SelectedItem).SortId;
|
||||||
|
a.AttrId = ((WineAttr)AttrInput.SelectedItem).AttrId;
|
||||||
|
a.CultId = ((WineCult)CultInput.SelectedItem).CultId;
|
||||||
|
|
||||||
|
EntityEntry<AreaCommitment>? tr = null;
|
||||||
try {
|
try {
|
||||||
if (IsEditing)
|
if (IsEditing) {
|
||||||
Context.Update(a);
|
tr = Context.Update(a);
|
||||||
else if (IsCreating)
|
} else if (IsCreating) {
|
||||||
Context.Add(a);
|
tr = (await Context.AddAsync(a));
|
||||||
Context.SaveChanges();
|
}
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
|
if (tr != null) await tr.ReloadAsync();
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Contract c = await UpdateContract((Contract)ContractList.SelectedItem);
|
||||||
|
AreaCommitment a = await UpdateaAreaCommitment(IsEditing ? (AreaCommitment)AreaCommitmentList.SelectedItem : Context.CreateProxy<AreaCommitment>());
|
||||||
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
AreaCommitmentList.IsEnabled = true;
|
AreaCommitmentList.IsEnabled = true;
|
||||||
@ -237,6 +268,9 @@ namespace Elwig.Windows {
|
|||||||
EnableContractNewDeleteButtons();
|
EnableContractNewDeleteButtons();
|
||||||
LockInputs();
|
LockInputs();
|
||||||
await RefreshContractList();
|
await RefreshContractList();
|
||||||
|
await RefreshAreaCommitmentList();
|
||||||
|
ContractList.SelectedItem = c;
|
||||||
|
AreaCommitmentList.SelectedItem = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) {
|
private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -262,6 +296,9 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void ContractSaveButton_Click(object sender, RoutedEventArgs evt) {
|
private async void ContractSaveButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Contract c = await UpdateContract(Context.CreateProxy<Contract>());
|
||||||
|
AreaCommitment a = await UpdateaAreaCommitment(Context.CreateProxy<AreaCommitment>());
|
||||||
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
AreaCommitmentList.IsEnabled = true;
|
AreaCommitmentList.IsEnabled = true;
|
||||||
@ -271,6 +308,9 @@ namespace Elwig.Windows {
|
|||||||
EnableAreaCommitmentNewEditDeleteButtons();
|
EnableAreaCommitmentNewEditDeleteButtons();
|
||||||
LockInputs();
|
LockInputs();
|
||||||
await RefreshContractList();
|
await RefreshContractList();
|
||||||
|
await RefreshAreaCommitmentList();
|
||||||
|
ContractList.SelectedItem = c;
|
||||||
|
AreaCommitmentList.SelectedItem = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ContractCancelButton_Click(object sender, RoutedEventArgs evt) {
|
private void ContractCancelButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -289,12 +329,16 @@ namespace Elwig.Windows {
|
|||||||
override protected void UpdateButtons() {
|
override protected void UpdateButtons() {
|
||||||
if (!IsEditing && !IsCreating) return;
|
if (!IsEditing && !IsCreating) return;
|
||||||
bool ch = HasChanged(), v = IsValid();
|
bool ch = HasChanged(), v = IsValid();
|
||||||
|
ContractSaveButton.IsEnabled = (v && ch);
|
||||||
AreaCommitmentResetButton.IsEnabled = (ch);
|
AreaCommitmentResetButton.IsEnabled = (ch);
|
||||||
AreaCommitmentSaveButton.IsEnabled = (v && ch);
|
AreaCommitmentSaveButton.IsEnabled = (v && ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitInputs() {
|
private async void InitInputs() {
|
||||||
|
VNrInput.Text = ContractList.SelectedItem == null ? (await Utils.NextVNr(Context)).ToString() : ((Contract)ContractList.SelectedItem).VNr.ToString();
|
||||||
|
MgNrInput.Text = member.MgNr.ToString();
|
||||||
FillOriginalValues();
|
FillOriginalValues();
|
||||||
|
ValidateRequiredInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EnableContractNewDeleteButtons() {
|
private void EnableContractNewDeleteButtons() {
|
||||||
@ -378,11 +422,60 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void ContractList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
private async void ContractList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
||||||
|
//await RefreshContractListQuery();
|
||||||
await RefreshAreaCommitmentList();
|
await RefreshAreaCommitmentList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AreaCommitmentList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
private void AreaCommitmentList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
||||||
RefreshInputs();
|
RefreshInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void KgInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
|
||||||
|
AT_Kg? curr_kg = (AT_Kg)KgInput.SelectedItem;
|
||||||
|
if (curr_kg != null) {
|
||||||
|
RdInput.ItemsSource = Context.WbRde.Where(r => r.KgNr == curr_kg.KgNr).OrderBy(r => r.Name).ToList();
|
||||||
|
}
|
||||||
|
ComboBox_SelectionChanged(sender, evt);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void InputTextChanged(TextBox input, Func<TextBox, bool, AppDbContext, Contract?, ValidationResult> checker) {
|
||||||
|
InputTextChanged(input, checker(input, SenderIsRequired(input), Context, (Contract)ContractList.SelectedItem));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void InputLostFocus(TextBox input, Func<TextBox, bool, AppDbContext, Contract?, ValidationResult> checker, string? msg = null) {
|
||||||
|
InputLostFocus(input, checker(input, SenderIsRequired(input), Context, (Contract)ContractList.SelectedItem), msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NumericInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckNumeric);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VNrInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckVNr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VNrInput_LostFocus(object sender, RoutedEventArgs evt) {
|
||||||
|
InputLostFocus((TextBox)sender, Validator.CheckVNr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void YearFromInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckNumeric);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void YearToInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckNumeric);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GstNrInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckGstNr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GstNrInput_LostFocus(object sender, RoutedEventArgs evt) {
|
||||||
|
InputLostFocus((TextBox)sender, Validator.CheckGstNr);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AreaInput_TextChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
InputTextChanged((TextBox)sender, Validator.CheckNumeric);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user