From cfa1f1eeeafcd98d0c139323f2c71704c28d1c54 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Wed, 23 Aug 2023 15:45:59 +0200 Subject: [PATCH] Adust AreaComAdminWindow to new db schema --- Elwig/App.xaml | 8 +- Elwig/App.xaml.cs | 26 ++++--- Elwig/Helpers/AppDbContext.cs | 4 +- Elwig/Models/AreaCom.cs | 16 +--- Elwig/Models/AreaComAttr.cs | 19 ----- Elwig/Models/AreaComType.cs | 50 +++++++++++++ Elwig/Models/Member.cs | 3 + Elwig/Windows/AreaComAdminWindow.xaml | 93 +++++++++++------------- Elwig/Windows/AreaComAdminWindow.xaml.cs | 60 ++++----------- 9 files changed, 133 insertions(+), 146 deletions(-) delete mode 100644 Elwig/Models/AreaComAttr.cs create mode 100644 Elwig/Models/AreaComType.cs diff --git a/Elwig/App.xaml b/Elwig/App.xaml index d8b5a5e..29d0516 100644 --- a/Elwig/App.xaml +++ b/Elwig/App.xaml @@ -11,17 +11,13 @@ - - - + - - - + diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index ddda1b7..0d02224 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -58,19 +58,25 @@ namespace Elwig { Dictionary branches = new(); using (var ctx = new AppDbContext()) { - if (!ctx.Database.CanConnect()) { - MessageBox.Show($"Invalid Database:\n\n{Config.DatabaseFile}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error); - Shutdown(); - return; - } else { - branches = ctx.Branches.ToDictionary(b => b.Name.ToLower(), b => (b.ZwstId, b.Name, b.PostalDest?.AtPlz?.Plz, b.PostalDest?.AtPlz?.Dest, b.Address, b.PhoneNr, b.FaxNr, b.MobileNr)); - try { - Client = new(ctx); - } catch (Exception e) { - MessageBox.Show($"Fehler beim Laden der Mandantendaten:\n\n{e.Message}", "Fehler"); + try { + if (!ctx.Database.CanConnect()) { + MessageBox.Show($"Invalid Database:\n\n{Config.DatabaseFile}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error); Shutdown(); return; + } else { + branches = ctx.Branches.ToDictionary(b => b.Name.ToLower(), b => (b.ZwstId, b.Name, b.PostalDest?.AtPlz?.Plz, b.PostalDest?.AtPlz?.Dest, b.Address, b.PhoneNr, b.FaxNr, b.MobileNr)); + try { + Client = new(ctx); + } catch (Exception e) { + MessageBox.Show($"Fehler beim Laden der Mandantendaten:\n\n{e.Message}", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); + Shutdown(); + return; + } } + } catch (Exception e) { + MessageBox.Show($"Invalid Database:\n\n{e.Message}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error); + Shutdown(); + return; } } Utils.RunBackground("HTML Initialization", () => Documents.Html.Init(PrintingReadyChanged)); diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs index 5cd372d..f57ca2e 100644 --- a/Elwig/Helpers/AppDbContext.cs +++ b/Elwig/Helpers/AppDbContext.cs @@ -28,11 +28,11 @@ namespace Elwig.Helpers { public DbSet WineAttributes { get; private set; } public DbSet WineCultivations { get; private set; } public DbSet Branches { get; private set; } + public DbSet AreaCommitmentTypes { get; private set; } public DbSet Members { get; private set; } public DbSet BillingAddresses { get; private set; } public DbSet MemberTelephoneNrs { get; private set; } public DbSet AreaCommitments { get; private set; } - public DbSet AreaCommitmentAttributes { get; private set; } public DbSet Seasons { get; private set; } public DbSet Modifiers { get; private set; } public DbSet Deliveries { get; private set; } @@ -110,7 +110,7 @@ namespace Elwig.Helpers { public async Task NextFbNr() { int c = await AreaCommitments.Select(ac => ac.FbNr).MinAsync(); (await AreaCommitments.OrderBy(ac => ac.FbNr).Select(ac => ac.FbNr).ToListAsync()) - .ForEach(a => { if (a <= c + 100) c = a; }); + .ForEach(a => { if (a <= c + 1000) c = a; }); return c + 1; } diff --git a/Elwig/Models/AreaCom.cs b/Elwig/Models/AreaCom.cs index aebc26e..2e3c157 100644 --- a/Elwig/Models/AreaCom.cs +++ b/Elwig/Models/AreaCom.cs @@ -1,7 +1,5 @@ using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; namespace Elwig.Models { [Table("area_commitment"), PrimaryKey("FbNr")] @@ -12,8 +10,8 @@ namespace Elwig.Models { [Column("mgnr")] public int MgNr { get; set; } - [Column("sortid")] - public string SortId { get; set; } + [Column("vtrgid")] + public string VtrgId { get; set; } [Column("cultid")] public string CultId { get; set; } @@ -42,8 +40,8 @@ namespace Elwig.Models { [ForeignKey("MgNr")] public virtual Member Member { get; private set; } - [ForeignKey("SortId")] - public virtual WineVar WineVar { get; private set; } + [ForeignKey("VtrgId")] + public virtual AreaComType AreaComType { get; private set; } [ForeignKey("CultId")] public virtual WineCult WineCult { get; private set; } @@ -53,11 +51,5 @@ namespace Elwig.Models { [ForeignKey("KgNr, RdNr")] public virtual WbRd? Rd { get; private set; } - - [InverseProperty("AreaCom")] - public virtual ISet AttributeEntries { get; private set; } - - [NotMapped] - public IEnumerable Attributes => AttributeEntries.Select(e => e.WineAttr); } } diff --git a/Elwig/Models/AreaComAttr.cs b/Elwig/Models/AreaComAttr.cs deleted file mode 100644 index cdb7f08..0000000 --- a/Elwig/Models/AreaComAttr.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using System.ComponentModel.DataAnnotations.Schema; - -namespace Elwig.Models { - [Table("area_commitment_attribute"), PrimaryKey("FbNr", "AttrId")] - public class AreaComAttr { - [Column("fbnr")] - public int FbNr { get; set; } - - [Column("attrid")] - public string AttrId { get; set; } - - [ForeignKey("FbNr")] - public virtual AreaCom AreaCom { get; private set; } - - [ForeignKey("AttrId")] - public virtual WineAttr WineAttr { get; private set; } - } -} diff --git a/Elwig/Models/AreaComType.cs b/Elwig/Models/AreaComType.cs new file mode 100644 index 0000000..5043979 --- /dev/null +++ b/Elwig/Models/AreaComType.cs @@ -0,0 +1,50 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Elwig.Models { + [Table("area_commitment_type"), PrimaryKey("VtrgId"), Index("SortId", "AttrId1", "AttrId2", "Discriminator")] + public class AreaComType { + [Column("vtrgid")] + public string VtrgId { get; set; } + + [Column("sortid")] + public string SortId { get; set; } + + [Column("attrid_1")] + public string? AttrId1 { get; set; } + + [Column("attrid_2")] + public string? AttrId2 { get; set; } + + [Column("disc")] + public string? Discriminator { get; set; } + + [Column("min_kg_per_ha")] + public int? MinKgPerHa { get; set; } + + [Column("max_kg_per_ha")] + public int? MaxKgPerHa { get; set; } + + [Column("penalty_amount")] + public double? PenaltyAmoutValue { get; set; } + + [NotMapped] + public decimal? PenaltyAmount { + get => PenaltyAmoutValue != null ? (decimal)PenaltyAmoutValue : null; + set => PenaltyAmoutValue = value != null ? (double)value : null; + } + + [ForeignKey("SortId")] + public virtual WineVar WineVar { get; private set; } + + [ForeignKey("AttrId1")] + public virtual WineAttr? WineAttr1 { get; private set; } + + [ForeignKey("AttrId2")] + public virtual WineAttr? WineAttr2 { get; private set; } + + [NotMapped] + public string DisplayName => WineVar.Name + (WineAttr1 != null ? $" {WineAttr1.Name}" : "") + + (WineAttr2 != null ? $" {WineAttr2.Name}" : "") + (Discriminator != null ? $" ({Discriminator})" : ""); + } +} diff --git a/Elwig/Models/Member.cs b/Elwig/Models/Member.cs index c021a51..f523c10 100644 --- a/Elwig/Models/Member.cs +++ b/Elwig/Models/Member.cs @@ -110,6 +110,9 @@ namespace Elwig.Models { [Column("active")] public bool IsActive { get; set; } + [Column("deceased")] + public bool IsDeceased { get; set; } + [Column("iban")] public string? Iban { get; set; } diff --git a/Elwig/Windows/AreaComAdminWindow.xaml b/Elwig/Windows/AreaComAdminWindow.xaml index 223e391..93592c5 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml +++ b/Elwig/Windows/AreaComAdminWindow.xaml @@ -47,9 +47,8 @@ - - - + + @@ -60,7 +59,7 @@ - + @@ -69,38 +68,44 @@ + Margin="5,10,5,42" FontSize="14" Grid.ColumnSpan="3" Background="#e2e2e2"> - + - + + + + +