Update models because contracts were removed

This commit is contained in:
2023-05-01 22:17:50 +02:00
parent 54aaf9fda0
commit c8f0537976
9 changed files with 77 additions and 103 deletions

View File

@ -25,9 +25,7 @@ namespace Elwig.Helpers {
public DbSet<WbKg> WbKgs { get; set; }
public DbSet<WbRd> WbRde { get; set; }
public DbSet<AreaCom> AreaCommitments { get; set; }
public DbSet<AreaComParcel> AreaCommitmentParcels { get; set; }
public DbSet<AreaComAttr> AreaCommitmentAttributes { get; set; }
public DbSet<Contract> Contracts { get; set; }
public DbSet<WineOrigin> WineOrigins { get; set; }
public DbSet<WineAttr> WineAttributes { get; set; }
public DbSet<WineCult> WineCultivations { get; set; }
@ -75,8 +73,8 @@ namespace Elwig.Helpers {
return await Members.FindAsync(mgnr) != null;
}
public async Task<bool> VNrExists(int vnr) {
return await Contracts.FindAsync(vnr) != null;
public async Task<bool> FbNrExists(int fbnr) {
return await AreaCommitments.FindAsync(fbnr) != null;
}
public async Task<int> NextMgNr() {
@ -86,9 +84,9 @@ namespace Elwig.Helpers {
return c + 1;
}
public async Task<int> NextVNr() {
int c = await Contracts.Select(co => co.VNr).MinAsync();
(await Contracts.OrderBy(co => co.VNr).Select(co => co.VNr).ToListAsync())
public async Task<int> 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; });
return c + 1;
}

View File

@ -411,7 +411,7 @@ namespace Elwig.Helpers {
return new(true, null);
}
public static ValidationResult CheckVNr(TextBox input, bool required, AppDbContext ctx, Contract? c) {
public static ValidationResult CheckFbNr(TextBox input, bool required, AppDbContext ctx, AreaCom? c) {
var res = CheckInteger(input, required);
if (!res.IsValid) {
return res;
@ -420,8 +420,8 @@ namespace Elwig.Helpers {
}
int nr = int.Parse(input.Text);
if (nr != c?.VNr && ctx.VNrExists(nr).GetAwaiter().GetResult()) {
return new(false, "Vertragsnummer wird bereits verwendet");
if (nr != c?.FbNr && ctx.FbNrExists(nr).GetAwaiter().GetResult()) {
return new(false, "Flächenbindungsnummer wird bereits verwendet");
}
return new(true, null);

View File

@ -4,13 +4,13 @@ using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
namespace Elwig.Models {
[Table("area_commitment"), PrimaryKey("VNr")]
[Table("area_commitment"), PrimaryKey("FbNr")]
public class AreaCom {
[Column("vnr")]
public int VNr { get; set; }
[Column("fbnr")]
public int FbNr { get; set; }
[Column("area")]
public int Area { get; set; }
[Column("mgnr")]
public int MgNr { get; set; }
[Column("sortid")]
public string SortId { get; set; }
@ -18,8 +18,29 @@ namespace Elwig.Models {
[Column("cultid")]
public string CultId { get; set; }
[ForeignKey("VNr")]
public virtual Contract Contract { get; private set; }
[Column("area")]
public int Area { get; set; }
[Column("kgnr")]
public int KgNr { get; set; }
[Column("gstnr")]
public string GstNr { get; set; }
[Column("rdnr")]
public int RdNr { get; set; }
[Column("year_from")]
public int YearFrom { get; set; }
[Column("year_to")]
public int? YearTo { get; set; }
[Column("comment")]
public string? Comment { get; set; }
[ForeignKey("MgNr")]
public virtual Member Member { get; private set; }
[ForeignKey("SortId")]
public virtual WineVar WineVar { get; private set; }
@ -27,8 +48,11 @@ namespace Elwig.Models {
[ForeignKey("CultId")]
public virtual WineCult WineCult { get; private set; }
[InverseProperty("AreaCom")]
public virtual ISet<AreaComParcel> Parcels { get; private set; }
[ForeignKey("KgNr")]
public virtual WbKg Kg { get; private set; }
[ForeignKey("KgNr, RdNr")]
public virtual WbRd? Rd { get; private set; }
[InverseProperty("AreaCom")]
public virtual ISet<AreaComAttr> AttributeEntries { get; private set; }

View File

@ -2,15 +2,15 @@ using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elwig.Models {
[Table("area_commitment_attribute"), PrimaryKey("VNr", "AttrId")]
[Table("area_commitment_attribute"), PrimaryKey("FbNr", "AttrId")]
public class AreaComAttr {
[Column("vnr")]
public int VNr { get; set; }
[Column("fbnr")]
public int FbNr { get; set; }
[Column("attrid")]
public string AttrId { get; set; }
[ForeignKey("VNr")]
[ForeignKey("FbNr")]
public virtual AreaCom AreaCom { get; private set; }
[ForeignKey("AttrId")]

View File

@ -1,31 +0,0 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elwig.Models {
[Table("area_commitment_parcel"), PrimaryKey("VNr", "KgNr", "GstNr")]
public class AreaComParcel {
[Column("vnr")]
public int VNr { get; set; }
[Column("kgnr")]
public int KgNr { get; set; }
[Column("gstnr")]
public string? GstNr { get; set; }
[Column("rdnr")]
public int? RdNr { get; set; }
[Column("area")]
public int? Area { get; set; }
[ForeignKey("KgNr")]
public virtual WbKg Kg { get; private set; }
[ForeignKey("KgNr, RdNr")]
public virtual WbRd? Rd { get; private set; }
[ForeignKey("VNr")]
public virtual AreaCom AreaCom { get; private set; }
}
}

View File

@ -1,45 +0,0 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elwig.Models {
[Table("contract"), PrimaryKey("VNr")]
public class Contract {
[Column("vnr")]
public int VNr { get; set; }
[Column("mgnr")]
public int MgNr { get; set; }
[Column("date")]
public string? DateString { get; set; }
[NotMapped]
public DateOnly? Date {
get {
return DateString != null ? DateOnly.ParseExact(DateString, "yyyy-MM-dd") : null;
}
set {
DateString = value?.ToString("yyyy-MM-dd");
}
}
[Column("year_from")]
public int YearFrom { get; set; }
[Column("year_to")]
public int? YearTo { get; set; }
[Column("comment")]
public string? Comment { get; set; }
[ForeignKey("MgNr")]
public virtual Member Member { get; private set; }
[InverseProperty("Contract")]
public virtual AreaCom? AreaCom { get; private set; }
[NotMapped]
public int? Area => AreaCom?.Area;
}
}

View File

@ -162,10 +162,10 @@ namespace Elwig.Models {
public virtual Branch? Branch { get; private set; }
[InverseProperty("Member")]
public virtual ISet<Contract> Contracts { get; private set; }
public virtual ISet<AreaCom> AreaCommitments { get; private set; }
[NotMapped]
public virtual IEnumerable<Contract> ActiveContracts => Contracts
public virtual IEnumerable<AreaCom> ActiveAreaCommitments => AreaCommitments
.Where(c => c.YearFrom <= Utils.CurrentSeason && (c.YearTo ?? int.MaxValue) >= Utils.CurrentSeason);
[InverseProperty("Member")]

View File

@ -18,7 +18,7 @@ namespace Elwig.Windows {
public AreaComAdminWindow(Member member) {
InitializeComponent();
this.member = member;
Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig";
Title = $"Flächenbindungen - {member.AdministrativeName} - Elwig";
ExemptInputs = new Control[] {
MgNrInput, ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton,
ContractSaveButton, ContractCancelButton, NewAreaCommitmentButton,
@ -40,8 +40,10 @@ namespace Elwig.Windows {
}
private async Task RefreshContractList() {
/*
await Context.Contracts.LoadAsync();
await RefreshContractListQuery();
*/
}
private async Task RefreshAreaCommitmentList() {
@ -50,6 +52,7 @@ namespace Elwig.Windows {
}
private async Task RefreshContractListQuery() {
/*
List<Contract> contracts = await Context.Contracts.Where(c => c.MgNr == member.MgNr).ToListAsync();
ContractList.ItemsSource = contracts;
@ -59,9 +62,11 @@ namespace Elwig.Windows {
// TODO notwendig?
await RefreshAreaCommitmentList();
RefreshInputs();
*/
}
private async Task RefreshAreaCommitmentListQuery() {
/*
Contract? contract = (Contract)ContractList.SelectedItem;
if (contract == null) {
@ -75,9 +80,11 @@ namespace Elwig.Windows {
if (parcels.Count == 1)
AreaCommitmentList.SelectedIndex = 0;
RefreshInputs();
*/
}
private void RefreshInputs(bool validate = false) {
/*
ClearInputStates();
Contract? c = (Contract)ContractList.SelectedItem;
AreaComParcel? a = (AreaComParcel)AreaCommitmentList.SelectedItem;
@ -102,8 +109,10 @@ namespace Elwig.Windows {
}
if (!validate) ClearInputStates();
GC.Collect();
*/
}
/*
private void FillInputs(AreaComParcel a) {
ClearOriginalValues();
@ -124,6 +133,7 @@ namespace Elwig.Windows {
FillOriginalValues();
}
*/
private void NewAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
IsCreating = true;
@ -155,6 +165,7 @@ namespace Elwig.Windows {
}
private async void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
/*
AreaComParcel a = (AreaComParcel)AreaCommitmentList.SelectedItem;
if (a == null) return;
@ -166,6 +177,7 @@ namespace Elwig.Windows {
Context.SaveChanges();
await RefreshAreaCommitmentList();
}
*/
}
private void NewContractButton_Click(object sender, RoutedEventArgs evt) {
@ -182,6 +194,7 @@ namespace Elwig.Windows {
}
private async void DeleteContractButton_Click(object sender, RoutedEventArgs evt) {
/*
Contract c = (Contract)ContractList.SelectedItem;
if (c == null) return;
@ -193,8 +206,10 @@ namespace Elwig.Windows {
Context.SaveChanges();
await RefreshContractList();
}
*/
}
/*
private async Task<Contract> UpdateContract(Contract c) {
int newVNr = int.Parse(VNrInput.Text);
c.MgNr = int.Parse(MgNrInput.Text);
@ -255,8 +270,10 @@ namespace Elwig.Windows {
return a;
}
*/
private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) {
/*
Contract c = await UpdateContract((Contract)ContractList.SelectedItem);
AreaComParcel a = await UpdateaAreaComParcel(IsEditing ? (AreaComParcel)AreaCommitmentList.SelectedItem : Context.CreateProxy<AreaComParcel>());
@ -272,6 +289,7 @@ namespace Elwig.Windows {
await RefreshAreaCommitmentList();
ContractList.SelectedItem = c;
AreaCommitmentList.SelectedItem = a;
*/
}
private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) {
@ -297,6 +315,7 @@ namespace Elwig.Windows {
}
private async void ContractSaveButton_Click(object sender, RoutedEventArgs evt) {
/*
Contract c = await UpdateContract(Context.CreateProxy<Contract>());
AreaComParcel a = await UpdateaAreaComParcel(Context.CreateProxy<AreaComParcel>());
@ -312,6 +331,7 @@ namespace Elwig.Windows {
await RefreshAreaCommitmentList();
ContractList.SelectedItem = c;
AreaCommitmentList.SelectedItem = a;
*/
}
private void ContractCancelButton_Click(object sender, RoutedEventArgs evt) {
@ -336,10 +356,12 @@ namespace Elwig.Windows {
}
private async void InitInputs() {
/*
VNrInput.Text = ContractList.SelectedItem == null ? (await Context.NextVNr()).ToString() : ((Contract)ContractList.SelectedItem).VNr.ToString();
MgNrInput.Text = member.MgNr.ToString();
FillOriginalValues();
ValidateRequiredInputs();
*/
}
private void EnableContractNewDeleteButtons() {
@ -439,6 +461,7 @@ namespace Elwig.Windows {
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));
}
@ -446,17 +469,22 @@ namespace Elwig.Windows {
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.CheckInteger);
}
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) {

View File

@ -409,7 +409,7 @@ namespace Elwig.Windows {
ContactPostalInput.IsChecked = m.ContactViaPost;
ContactEmailInput.IsChecked = m.ContactViaEmail;
AreaCommitment.Text = $"{m.ActiveContracts.Select(c => c.Area).Sum():N0} m²";
AreaCommitment.Text = $"{m.ActiveAreaCommitments.Select(c => c.Area).Sum():N0} m²";
Menu_Member_SendEmail.IsEnabled = m.Email != null;