diff --git a/.gitignore b/.gitignore
index eeb2be6..b88d016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
WGneu/obj/
WGneu/bin/
+.vs
\ No newline at end of file
diff --git a/WGneu/App.xaml b/WGneu/App.xaml
index 1655798..5258fea 100644
--- a/WGneu/App.xaml
+++ b/WGneu/App.xaml
@@ -5,11 +5,11 @@
StartupUri="MainWindow.xaml"
xmlns:ui="http://schemas.modernwpf.com/2019">
-
+
diff --git a/WGneu/BankDetailsWindow.xaml.cs b/WGneu/BankDetailsWindow.xaml.cs
index 34675f9..edb6849 100644
--- a/WGneu/BankDetailsWindow.xaml.cs
+++ b/WGneu/BankDetailsWindow.xaml.cs
@@ -11,6 +11,8 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
+using WGneu.Models;
+
namespace WGneu
{
diff --git a/WGneu/MainWindow.xaml b/WGneu/MainWindow.xaml
index eaca478..a8e5f98 100644
--- a/WGneu/MainWindow.xaml
+++ b/WGneu/MainWindow.xaml
@@ -16,12 +16,8 @@
-
+
-
+
diff --git a/WGneu/MainWindow.xaml.cs b/WGneu/MainWindow.xaml.cs
index 11e955f..3a30967 100644
--- a/WGneu/MainWindow.xaml.cs
+++ b/WGneu/MainWindow.xaml.cs
@@ -15,6 +15,8 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
+using WGneu.Models;
+
namespace WGneu
{
diff --git a/WGneu/MemberAddWindow.xaml b/WGneu/MemberAddWindow.xaml
new file mode 100644
index 0000000..31c13a2
--- /dev/null
+++ b/WGneu/MemberAddWindow.xaml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WGneu/MemberAddWindow.xaml.cs b/WGneu/MemberAddWindow.xaml.cs
new file mode 100644
index 0000000..476d4d7
--- /dev/null
+++ b/WGneu/MemberAddWindow.xaml.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+using WGneu.Models;
+
+
+namespace WGneu
+{
+ ///
+ /// Interaction logic for MemberAddWindow.xaml
+ ///
+ public partial class MemberAddWindow : Window
+ {
+ private WGContext _context;
+ private readonly Member member = new Member();
+ public event EventHandler Event;
+
+ public MemberAddWindow(WGContext context)
+ {
+ this._context = context;
+
+ InitializeComponent();
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ MgNr.Text = member.MgNr.ToString();
+ GivenName.Text = member.GivenName;
+ FamilyName.Text = member.FamilyName;
+ Zweigstelle.Text = member.Zweigstelle;
+ Country.Text = member.Country.Alpha2;
+ // PostalDest.Text= member.PostalDest;
+ Address.Text = member.Address;
+ DefaultKgnr.Text = member.DefaultKg.ToString();
+ }
+
+ private void Save_Button_Click(object sender, RoutedEventArgs e)
+ {
+ member.MgNr = Int32.Parse(MgNr.Text);
+ member.GivenName = GivenName.Text;
+ member.FamilyName = FamilyName.Text;
+ member.Zweigstelle = Zweigstelle.Text;
+ member.Country.Alpha2 = Country.Text;
+ // member.PostalDest = PostalDest.Text;
+ member.Address= Address.Text;
+ member.DefaultKg.KgNr = Int32.Parse(DefaultKgnr.Text);
+
+ _context.Add(member);
+
+ try
+ {
+ _context.SaveChanges();
+ }
+ catch
+ {
+ SaveError.Content = "There was an Error!";
+ return;
+ }
+ this.Call_Event();
+ this.Close();
+ }
+
+ private void Call_Event()
+ {
+ if (this.Event != null)
+ {
+ this.Event(this, EventArgs.Empty);
+ }
+ }
+ }
+}
diff --git a/WGneu/MemberEditWindow.xaml b/WGneu/MemberEditWindow.xaml
new file mode 100644
index 0000000..604e80c
--- /dev/null
+++ b/WGneu/MemberEditWindow.xaml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WGneu/MemberEditWindow.xaml.cs b/WGneu/MemberEditWindow.xaml.cs
new file mode 100644
index 0000000..bcc1b2d
--- /dev/null
+++ b/WGneu/MemberEditWindow.xaml.cs
@@ -0,0 +1,74 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+using WGneu.Models;
+
+
+namespace WGneu
+{
+ ///
+ /// Interaction logic for MemberEditWindow.xaml
+ ///
+ public partial class MemberEditWindow : Window
+ {
+ private WGContext _context;
+ private readonly Member member;
+ public event EventHandler Event;
+
+ public MemberEditWindow(Member member, WGContext context)
+ {
+ this._context= context;
+ this.member = member;
+
+ InitializeComponent();
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ MgNr.Text = member.MgNr.ToString();
+ GivenName.Text = member.GivenName;
+ FamilyName.Text = member.FamilyName;
+ Zweigstelle.Text = member.Zweigstelle;
+ // Country.Text = member.Country;
+ // PostalDest.Text = member.PostalDest;
+ Address.Text = member.Address;
+ // DefaultKgnr.Text = member.DefaultKgnr.ToString();
+ }
+
+ private void Save_Button_Click(object sender, RoutedEventArgs e)
+ {
+ member.MgNr = Int32.Parse(MgNr.Text);
+ member.GivenName = GivenName.Text;
+ member.FamilyName = FamilyName.Text;
+ member.Zweigstelle = Zweigstelle.Text;
+ // member.Country = Country.Text;
+ // member.PostalDest = PostalDest.Text;
+ member.Address = Address.Text;
+ // member.DefaultKgnr = Int32.Parse(DefaultKgnr.Text);
+
+ _context.Update(member);
+ _context.SaveChanges();
+ this.Call_Event();
+ this.Close();
+ }
+
+ private void Call_Event()
+ {
+ if (this.Event != null)
+ {
+ this.Event(this, EventArgs.Empty);
+ }
+ }
+ }
+}
diff --git a/WGneu/MemberListWindow.xaml b/WGneu/MemberListWindow.xaml
index 5185a64..0a00c3c 100644
--- a/WGneu/MemberListWindow.xaml
+++ b/WGneu/MemberListWindow.xaml
@@ -7,21 +7,24 @@
xmlns:ui="http://schemas.modernwpf.com/2019"
ui:WindowHelper.UseModernWindowStyle="True"
mc:Ignorable="d"
- Title="Mitglieder" Height="450" Width="800"
+ Title="Mitglieder" Height="500" Width="800" MinHeight="500" MinWidth="800"
Loaded="Window_Loaded">
+ SelectionChanged="MemberList_SelectionChanged" VerticalAlignment="Top" Margin="10,10,540,0" FontSize="14" HeadersVisibility="Column" IsReadOnly="True">
-
-
-
+
+
+
-
+
+
+
+
+
diff --git a/WGneu/MemberListWindow.xaml.cs b/WGneu/MemberListWindow.xaml.cs
index 40a15c0..7495740 100644
--- a/WGneu/MemberListWindow.xaml.cs
+++ b/WGneu/MemberListWindow.xaml.cs
@@ -13,6 +13,8 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
+using WGneu.Models;
+
namespace WGneu
{
@@ -30,8 +32,7 @@ namespace WGneu
private void Window_Loaded(object sender, RoutedEventArgs e)
{
- _context.Members.Load();
- MemberList.ItemsSource = _context.Members.ToList();
+ Refresh_Member_Data();
}
protected override void OnClosing(CancelEventArgs e)
@@ -46,6 +47,44 @@ namespace WGneu
MgNr.Text = m.MgNr.ToString();
GivenName.Text = m.GivenName;
FamilyName.Text = m.FamilyName;
+
+ AT_Plz p = m.PostalDest.Plz(_context);
+ Plz.Text = p.Plz.ToString();
+
+ var o = p.Orte(_context);
+ Ort.ItemsSource = o;
+ Ort.
+
+ Edit_Member.IsEnabled = true;
+ }
+
+ private void Edit_Member_Button_Click(object sender, RoutedEventArgs e)
+ {
+ Member m = (Member)MemberList.SelectedItem;
+
+ if (m == null) return;
+
+ MemberEditWindow w = new MemberEditWindow(m, _context);
+ w.Event += new EventHandler(Refresh_Member_Data_Event);
+ w.Show();
+ }
+
+ private void Add_Member_Button_Click(object sender, RoutedEventArgs e)
+ {
+ MemberAddWindow w = new MemberAddWindow(_context);
+ w.Event += new EventHandler(Refresh_Member_Data_Event);
+ w.Show();
+ }
+
+ private void Refresh_Member_Data()
+ {
+ _context.Members.Load();
+ MemberList.ItemsSource = _context.Members.ToList();
+ }
+
+ private void Refresh_Member_Data_Event(object sender, EventArgs e)
+ {
+ Refresh_Member_Data();
}
}
}
diff --git a/WGneu/Models/AT_Gem.cs b/WGneu/Models/AT_Gem.cs
new file mode 100644
index 0000000..ffa55ad
--- /dev/null
+++ b/WGneu/Models/AT_Gem.cs
@@ -0,0 +1,20 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WGneu.Models
+{
+ [Table("AT_gem"), PrimaryKey("Gkz")]
+ public class AT_Gem
+ {
+ [Column("gkz")]
+ public int Gkz { get; set; }
+
+ [Column("name")]
+ public String Name { get; set; }
+ }
+}
diff --git a/WGneu/Models/AT_Kg.cs b/WGneu/Models/AT_Kg.cs
new file mode 100644
index 0000000..e6afee5
--- /dev/null
+++ b/WGneu/Models/AT_Kg.cs
@@ -0,0 +1,26 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WGneu.Models
+{
+ [Table("AT_kg"), PrimaryKey("KgNr")]
+ public class AT_Kg
+ {
+ [Column("kgnr")]
+ public int KgNr { get; set; }
+
+ [Column("gkz")]
+ public int Gkz { get; set; }
+
+ [Column("name")]
+ public String Name { get; set; }
+
+ [ForeignKey("Gkz")]
+ public virtual AT_Gem Gem { get; set; }
+ }
+}
diff --git a/WGneu/Models/AT_Ort.cs b/WGneu/Models/AT_Ort.cs
new file mode 100644
index 0000000..ba871be
--- /dev/null
+++ b/WGneu/Models/AT_Ort.cs
@@ -0,0 +1,32 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WGneu.Models
+{
+ [Table("AT_ort"), PrimaryKey("Okz")]
+ public class AT_Ort
+ {
+ [Column("okz")]
+ public int Okz { get; set; }
+
+ [Column("gkz")]
+ public int Gkz { get; set; }
+
+ [Column("kgnr")]
+ public int KgNr { get; set; }
+
+ [Column("name")]
+ public String Name { get; set; }
+
+ [ForeignKey("Gkz")]
+ public virtual AT_Gem Gem { get; set; }
+
+ [ForeignKey("KgNr")]
+ public virtual AT_Kg Kg { get; set; }
+ }
+}
diff --git a/WGneu/Models/AT_Plz.cs b/WGneu/Models/AT_Plz.cs
new file mode 100644
index 0000000..1422cc7
--- /dev/null
+++ b/WGneu/Models/AT_Plz.cs
@@ -0,0 +1,41 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WGneu.Models
+{
+ [Table("AT_plz"), PrimaryKey("Plz", "Okz"), Index("Id", IsUnique = true)]
+ public class AT_Plz
+ {
+ [Column("plz")]
+ public int Plz { get; set; }
+
+ [Column("okz")]
+ public int Okz { get; set; }
+
+ [Column("country")]
+ public String CountryCode { get; }
+
+ [Column("id")]
+ public String Id { get; }
+
+ [Column("dest")]
+ public String Dest { get; set; }
+
+ [ForeignKey("Okz")]
+ public virtual AT_Ort Ort { get; set; }
+
+ [ForeignKey("CountryCode")]
+ public virtual Country Country { get; set; }
+
+ public ISet Orte(WGContext ctx)
+ {
+ return ctx.Postleitzahlen.Where(p => p.Plz == Plz).Select(p => p.Ort).ToHashSet();
+ }
+ }
+}
diff --git a/WGneu/Models/Country.cs b/WGneu/Models/Country.cs
index 35a7b28..cd7a811 100644
--- a/WGneu/Models/Country.cs
+++ b/WGneu/Models/Country.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace WGneu
+namespace WGneu.Models
{
[Table("country"), PrimaryKey("Alpha2")]
public class Country
diff --git a/WGneu/Models/Gradation.cs b/WGneu/Models/Gradation.cs
index 1aa73ca..06963db 100644
--- a/WGneu/Models/Gradation.cs
+++ b/WGneu/Models/Gradation.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace WGneu
+namespace WGneu.Models
{
// 1 °KMW =
// 1 °NM = kg/100L = 10g/L
diff --git a/WGneu/Models/Member.cs b/WGneu/Models/Member.cs
index 72876b3..1404a7a 100644
--- a/WGneu/Models/Member.cs
+++ b/WGneu/Models/Member.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace WGneu
+namespace WGneu.Models
{
[Table("member"), PrimaryKey("MgNr")]
public class Member
@@ -19,5 +19,29 @@ namespace WGneu
[Column("family_name")]
public String FamilyName { get; set; }
+
+ [Column("zwstid")]
+ public String Zweigstelle { get; set; }
+
+ [Column("country")]
+ public String CountryCode { get; set; }
+
+ [Column("postal_dest")]
+ public String PostalDestId { get; set; }
+
+ [Column("address")]
+ public String Address { get; set; }
+
+ [Column("default_kgnr")]
+ public int DefaultKgNr { get; set; }
+
+ [ForeignKey("CountryCode")]
+ public virtual Country Country { get; set; }
+
+ [ForeignKey("CountryCode, PostalDestId")]
+ public virtual PostalDest PostalDest { get; set; }
+
+ [ForeignKey("DefaultKgNr")]
+ public virtual AT_Kg DefaultKg { get; set; }
}
}
diff --git a/WGneu/Models/PostalDest.cs b/WGneu/Models/PostalDest.cs
new file mode 100644
index 0000000..aacb515
--- /dev/null
+++ b/WGneu/Models/PostalDest.cs
@@ -0,0 +1,29 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WGneu.Models
+{
+ [Table("postal_dest"), PrimaryKey("CountryCode", "Id")]
+ public class PostalDest
+ {
+ [Column("country")]
+ public String CountryCode { get; set; }
+
+ [Column("id")]
+ public String Id { get; set; }
+
+ [ForeignKey("CountryCode")]
+ public virtual Country Country { get; set; }
+
+ public AT_Plz? Plz(WGContext ctx)
+ {
+ if (CountryCode != "AT") return null;
+ return ctx.Postleitzahlen.Where(p => p.Id == Id).FirstOrDefault();
+ }
+ }
+}
diff --git a/WGneu/WGContext.cs b/WGneu/WGContext.cs
index a03a957..3a0e71e 100644
--- a/WGneu/WGContext.cs
+++ b/WGneu/WGContext.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WGneu.Models;
namespace WGneu
{
@@ -11,10 +12,15 @@ namespace WGneu
{
public DbSet Countries { get; set; }
public DbSet Members { get; set; }
+ public DbSet Gemeinden { get; set; }
+ public DbSet Katastralgemeinden { get; set; }
+ public DbSet Orte { get; set; }
+ public DbSet Postleitzahlen { get; set; }
+ public DbSet PostalDestinations { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
- optionsBuilder.UseSqlite("Data Source=\"C:\\Users\\Lorenz\\Desktop\\wgtest.sqlite3\"");
+ optionsBuilder.UseSqlite("Data Source=\"C:\\Users\\tom\\Projects\\wgneu\\wgtest.sqlite3\"; foreign keys=true");
optionsBuilder.UseLazyLoadingProxies();
}
}
diff --git a/WGneu/WGneu.csproj b/WGneu/WGneu.csproj
index d3b8224..d227e38 100644
--- a/WGneu/WGneu.csproj
+++ b/WGneu/WGneu.csproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/WGneu/WGneu.csproj.user b/WGneu/WGneu.csproj.user
index 8e6dd29..b476a62 100644
--- a/WGneu/WGneu.csproj.user
+++ b/WGneu/WGneu.csproj.user
@@ -10,6 +10,12 @@
Code
+
+ Code
+
+
+ Code
+
Code
@@ -21,6 +27,12 @@
Designer
+
+ Designer
+
+
+ Designer
+
Designer