Refactor and Fix PLZ/Ort in MemberListWindow

This commit is contained in:
2023-02-21 15:56:59 +01:00
parent a5d56a7c49
commit 71022c7fbf
14 changed files with 64 additions and 37 deletions

View File

@ -11,5 +11,13 @@
<ui:XamlControlsResources /> <ui:XamlControlsResources />
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>--> </ResourceDictionary>-->
<DataTemplate x:Key="PostalDestComboBoxTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Dest}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding Ort.Name}"/>
<TextBlock Text=")"/>
</StackPanel>
</DataTemplate>
</Application.Resources> </Application.Resources>
</Application> </Application>

View File

@ -25,7 +25,7 @@ namespace WGneu
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow : Window
{ {
private readonly WGContext _context = new WGContext(); private readonly WgContext _context = new WgContext();
private CollectionViewSource countryViewSource; private CollectionViewSource countryViewSource;
public MainWindow() public MainWindow()
{ {

View File

@ -21,11 +21,11 @@ namespace WGneu
/// </summary> /// </summary>
public partial class MemberAddWindow : Window public partial class MemberAddWindow : Window
{ {
private WGContext _context; private WgContext _context;
private readonly Member member = new Member(); private readonly Member member = new Member();
public event EventHandler Event; public event EventHandler Event;
public MemberAddWindow(WGContext context) public MemberAddWindow(WgContext context)
{ {
this._context = context; this._context = context;

View File

@ -22,11 +22,11 @@ namespace WGneu
/// </summary> /// </summary>
public partial class MemberEditWindow : Window public partial class MemberEditWindow : Window
{ {
private WGContext _context; private WgContext _context;
private readonly Member member; private readonly Member member;
public event EventHandler Event; public event EventHandler Event;
public MemberEditWindow(Member member, WGContext context) public MemberEditWindow(Member member, WgContext context)
{ {
this._context= context; this._context= context;
this.member = member; this.member = member;

View File

@ -23,8 +23,7 @@
<TextBox x:Name="FamilyName" HorizontalAlignment="Left" Margin="351,129,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="183" IsReadOnly="True"/> <TextBox x:Name="FamilyName" HorizontalAlignment="Left" Margin="351,129,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="183" IsReadOnly="True"/>
<Button x:Name="Edit_Member" Content="Mitglied bearbeiten" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="130,407,0,20" Click="Edit_Member_Button_Click" IsEnabled="False" FontSize="14" Padding="3,3,3,3"/> <Button x:Name="Edit_Member" Content="Mitglied bearbeiten" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="130,407,0,20" Click="Edit_Member_Button_Click" IsEnabled="False" FontSize="14" Padding="3,3,3,3"/>
<Button x:Name="Add_Member" Content="Mitglied erstellen" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,407,0,20" Click="Add_Member_Button_Click" FontSize="14" Padding="3,3,3,3"/> <Button x:Name="Add_Member" Content="Mitglied erstellen" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,407,0,20" Click="Add_Member_Button_Click" FontSize="14" Padding="3,3,3,3"/>
<TextBox x:Name="Plz" HorizontalAlignment="Left" Margin="351,191,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> <TextBox x:Name="Plz" HorizontalAlignment="Left" Margin="351,191,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" TextChanged="Plz_TextChanged"/>
<ComboBox x:Name="Ort" HorizontalAlignment="Left" Margin="498,189,0,0" VerticalAlignment="Top" Width="120" ItemTemplate="{Binding Name}"/> <ComboBox x:Name="Ort" HorizontalAlignment="Left" Margin="498,189,0,0" VerticalAlignment="Top" Width="200" ItemTemplate="{StaticResource PostalDestComboBoxTemplate}"/>
</Grid> </Grid>
</Window> </Window>

View File

@ -23,7 +23,7 @@ namespace WGneu
/// </summary> /// </summary>
public partial class MemberListWindow : Window public partial class MemberListWindow : Window
{ {
private readonly WGContext _context = new WGContext(); private readonly WgContext _context = new WgContext();
public MemberListWindow() public MemberListWindow()
{ {
@ -48,16 +48,36 @@ namespace WGneu
GivenName.Text = m.GivenName; GivenName.Text = m.GivenName;
FamilyName.Text = m.FamilyName; FamilyName.Text = m.FamilyName;
AT_Plz p = m.PostalDest.Plz(_context); AT_Plz? p = m.PostalDest.Plz(_context);
Plz.Text = p.Plz.ToString(); if (p != null)
{
Plz.Text = p.Plz.ToString();
var o = p.Orte(_context);
Ort.ItemsSource = o;
Ort.SelectedItem = p;
}
else
{
Ort.ItemsSource = null;
Ort.SelectedItem = null;
}
var o = p.Orte(_context);
Ort.ItemsSource = o;
Ort.
Edit_Member.IsEnabled = true; Edit_Member.IsEnabled = true;
} }
private void Plz_TextChanged(object sender, RoutedEventArgs e)
{
if (Plz.Text.Length == 4 && Plz.Text.All(char.IsDigit))
{
int plz = int.Parse(Plz.Text);
var o = _context.Postleitzahlen.Where(p => p.Plz == plz).ToHashSet();
Ort.ItemsSource = o;
Ort.SelectedItem = null;
}
}
private void Edit_Member_Button_Click(object sender, RoutedEventArgs e) private void Edit_Member_Button_Click(object sender, RoutedEventArgs e)
{ {
Member m = (Member)MemberList.SelectedItem; Member m = (Member)MemberList.SelectedItem;

View File

@ -15,6 +15,6 @@ namespace WGneu.Models
public int Gkz { get; set; } public int Gkz { get; set; }
[Column("name")] [Column("name")]
public String Name { get; set; } public string Name { get; set; }
} }
} }

View File

@ -18,7 +18,7 @@ namespace WGneu.Models
public int Gkz { get; set; } public int Gkz { get; set; }
[Column("name")] [Column("name")]
public String Name { get; set; } public string Name { get; set; }
[ForeignKey("Gkz")] [ForeignKey("Gkz")]
public virtual AT_Gem Gem { get; set; } public virtual AT_Gem Gem { get; set; }

View File

@ -21,7 +21,7 @@ namespace WGneu.Models
public int KgNr { get; set; } public int KgNr { get; set; }
[Column("name")] [Column("name")]
public String Name { get; set; } public string Name { get; set; }
[ForeignKey("Gkz")] [ForeignKey("Gkz")]
public virtual AT_Gem Gem { get; set; } public virtual AT_Gem Gem { get; set; }

View File

@ -19,13 +19,13 @@ namespace WGneu.Models
public int Okz { get; set; } public int Okz { get; set; }
[Column("country")] [Column("country")]
public String CountryCode { get; } public string CountryCode { get; }
[Column("id")] [Column("id")]
public String Id { get; } public string Id { get; }
[Column("dest")] [Column("dest")]
public String Dest { get; set; } public string Dest { get; set; }
[ForeignKey("Okz")] [ForeignKey("Okz")]
public virtual AT_Ort Ort { get; set; } public virtual AT_Ort Ort { get; set; }
@ -33,9 +33,9 @@ namespace WGneu.Models
[ForeignKey("CountryCode")] [ForeignKey("CountryCode")]
public virtual Country Country { get; set; } public virtual Country Country { get; set; }
public ISet<AT_Ort> Orte(WGContext ctx) public ISet<AT_Plz> Orte(WgContext ctx)
{ {
return ctx.Postleitzahlen.Where(p => p.Plz == Plz).Select(p => p.Ort).ToHashSet(); return ctx.Postleitzahlen.Where(p => p.Plz == Plz).ToHashSet();
} }
} }
} }

View File

@ -12,16 +12,16 @@ namespace WGneu.Models
public class Country public class Country
{ {
[Column("alpha2")] [Column("alpha2")]
public String Alpha2 { get; set; } public string Alpha2 { get; set; }
[Column("alpha3")] [Column("alpha3")]
public String Alpha3 { get; set; } public string Alpha3 { get; set; }
[Column("num")] [Column("num")]
public int Num { get; set; } public int Num { get; set; }
[Column("name")] [Column("name")]
public String Name { get; set; } public string Name { get; set; }
[Column("is_visible")] [Column("is_visible")]
public int IsVisible { get; set; } public int IsVisible { get; set; }

View File

@ -15,22 +15,22 @@ namespace WGneu.Models
public int MgNr { get; set; } public int MgNr { get; set; }
[Column("given_name")] [Column("given_name")]
public String GivenName { get; set; } public string GivenName { get; set; }
[Column("family_name")] [Column("family_name")]
public String FamilyName { get; set; } public string FamilyName { get; set; }
[Column("zwstid")] [Column("zwstid")]
public String Zweigstelle { get; set; } public string Zweigstelle { get; set; }
[Column("country")] [Column("country")]
public String CountryCode { get; set; } public string CountryCode { get; set; }
[Column("postal_dest")] [Column("postal_dest")]
public String PostalDestId { get; set; } public string PostalDestId { get; set; }
[Column("address")] [Column("address")]
public String Address { get; set; } public string Address { get; set; }
[Column("default_kgnr")] [Column("default_kgnr")]
public int DefaultKgNr { get; set; } public int DefaultKgNr { get; set; }

View File

@ -12,15 +12,15 @@ namespace WGneu.Models
public class PostalDest public class PostalDest
{ {
[Column("country")] [Column("country")]
public String CountryCode { get; set; } public string CountryCode { get; set; }
[Column("id")] [Column("id")]
public String Id { get; set; } public string Id { get; set; }
[ForeignKey("CountryCode")] [ForeignKey("CountryCode")]
public virtual Country Country { get; set; } public virtual Country Country { get; set; }
public AT_Plz? Plz(WGContext ctx) public AT_Plz? Plz(WgContext ctx)
{ {
if (CountryCode != "AT") return null; if (CountryCode != "AT") return null;
return ctx.Postleitzahlen.Where(p => p.Id == Id).FirstOrDefault(); return ctx.Postleitzahlen.Where(p => p.Id == Id).FirstOrDefault();

View File

@ -8,7 +8,7 @@ using WGneu.Models;
namespace WGneu namespace WGneu
{ {
public class WGContext : DbContext public class WgContext : DbContext
{ {
public DbSet<Country> Countries { get; set; } public DbSet<Country> Countries { get; set; }
public DbSet<Member> Members { get; set; } public DbSet<Member> Members { get; set; }
@ -20,7 +20,7 @@ namespace WGneu
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
optionsBuilder.UseSqlite("Data Source=\"C:\\Users\\tom\\Projects\\wgneu\\wgtest.sqlite3\"; foreign keys=true"); optionsBuilder.UseSqlite("Data Source=\"C:\\Users\\lorenz\\Desktop\\wgtest.sqlite3\"; foreign keys=true");
optionsBuilder.UseLazyLoadingProxies(); optionsBuilder.UseLazyLoadingProxies();
} }
} }