MemberDataSheet: Show area com buckets of current year (regardless of season)

This commit is contained in:
2024-02-21 15:10:27 +01:00
parent 99ca12b276
commit 8732141e6b
5 changed files with 26 additions and 14 deletions

View File

@ -15,7 +15,7 @@ namespace Elwig.Documents {
public MemberDataSheet(Member m, AppDbContext ctx) : base($"{Name} {m.AdministrativeName}", m) { public MemberDataSheet(Member m, AppDbContext ctx) : base($"{Name} {m.AdministrativeName}", m) {
DocumentId = $"{Name} {m.MgNr}"; DocumentId = $"{Name} {m.MgNr}";
Season = ctx.Seasons.ToList().MaxBy(s => s.Year) ?? throw new ArgumentException("invalid season"); Season = ctx.Seasons.ToList().MaxBy(s => s.Year) ?? throw new ArgumentException("invalid season");
MemberBuckets = ctx.GetMemberBuckets(Season.Year, m.MgNr).GetAwaiter().GetResult(); MemberBuckets = ctx.GetMemberBuckets(Utils.CurrentYear, m.MgNr).GetAwaiter().GetResult();
} }
} }
} }

View File

@ -9,7 +9,7 @@ namespace Elwig.Helpers {
public static class AppDbUpdater { public static class AppDbUpdater {
// Don't forget to update value in Tests/fetch-resources.bat! // Don't forget to update value in Tests/fetch-resources.bat!
public static readonly int RequiredSchemaVersion = 16; public static readonly int RequiredSchemaVersion = 17;
private static int VersionOffset = 0; private static int VersionOffset = 0;

View File

@ -0,0 +1,12 @@
-- schema version 16 to 17
CREATE VIEW v_virtual_season AS
SELECT year, max_kg_per_ha
FROM season
UNION
SELECT strftime('%Y', date()) + 0, (SELECT max_kg_per_ha FROM season ORDER BY year DESC LIMIT 1);
PRAGMA writable_schema = ON;
UPDATE sqlite_schema SET sql = REPLACE(sql, 'season s', 'v_virtual_season s')
WHERE type = 'view' AND name = 'v_area_commitment_bucket_strict';
PRAGMA writable_schema = OFF;

View File

@ -16,21 +16,21 @@ namespace Elwig.Windows {
public int MgNr => Member.MgNr; public int MgNr => Member.MgNr;
private readonly Member Member; private readonly Member Member;
private List<string> TextFilter = new(); private List<string> TextFilter = [];
public AreaComAdminWindow(int mgnr) { public AreaComAdminWindow(int mgnr) {
InitializeComponent(); InitializeComponent();
Member = Context.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value"); Member = Context.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value");
Title = $"Flächenbindungen - {Member.AdministrativeName} - Elwig"; Title = $"Flächenbindungen - {Member.AdministrativeName} - Elwig";
ExemptInputs = new Control[] { ExemptInputs = [
MgNrInput, AreaCommitmentList, NewAreaCommitmentButton, MgNrInput, AreaCommitmentList, NewAreaCommitmentButton,
EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton, EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
AreaCommitmentResetButton, AreaCommitmentCancelButton, SearchInput, ActiveAreaCommitmentInput AreaCommitmentResetButton, AreaCommitmentCancelButton, SearchInput, ActiveAreaCommitmentInput
}; ];
RequiredInputs = new Control[] { RequiredInputs = [
FbNrInput, YearFromInput, KgInput, RdInput, FbNrInput, YearFromInput, KgInput, RdInput,
GstNrInput, AreaInput.TextBox, AreaComTypeInput, WineCultivationInput GstNrInput, AreaInput.TextBox, AreaComTypeInput, WineCultivationInput
}; ];
} }
private void Window_Loaded(object sender, RoutedEventArgs e) { private void Window_Loaded(object sender, RoutedEventArgs e) {
@ -76,10 +76,10 @@ namespace Elwig.Windows {
} }
private async Task<(List<string>, IQueryable<AreaCom>, List<string>)> GetFilters() { private async Task<(List<string>, IQueryable<AreaCom>, List<string>)> GetFilters() {
List<string> filterNames = new(); List<string> filterNames = [];
IQueryable<AreaCom> areaComQuery = Context.AreaCommitments.Where(a => a.MgNr == Member.MgNr).OrderBy(a => a.FbNr); IQueryable<AreaCom> areaComQuery = Context.AreaCommitments.Where(a => a.MgNr == Member.MgNr).OrderBy(a => a.FbNr);
if (ActiveAreaCommitmentInput.IsChecked == true) { if (ActiveAreaCommitmentInput.IsChecked == true) {
areaComQuery = areaComQuery.Where(a => (a.YearFrom <= Utils.CurrentNextSeason) && (a.YearTo == null || a.YearTo >= Utils.CurrentNextSeason)); areaComQuery = areaComQuery.Where(a => (a.YearFrom <= Utils.CurrentYear) && (a.YearTo == null || a.YearTo >= Utils.CurrentYear));
filterNames.Add("aktiv"); filterNames.Add("aktiv");
} }
@ -151,7 +151,7 @@ namespace Elwig.Windows {
YearToInput.Text = a.YearTo.ToString(); YearToInput.Text = a.YearTo.ToString();
KgInput.SelectedItem = a.Kg.AtKg; KgInput.SelectedItem = a.Kg.AtKg;
RdInput.SelectedItem = a.Rd; RdInput.SelectedItem = a.Rd ?? RdInput.Items[0];
GstNrInput.Text = a.GstNr; GstNrInput.Text = a.GstNr;
AreaInput.Text = a.Area.ToString(); AreaInput.Text = a.Area.ToString();
@ -230,8 +230,8 @@ namespace Elwig.Windows {
a.RdNr = RdInput.SelectedItem.GetType() == typeof(NullItem) ? null : ((WbRd)RdInput.SelectedItem).RdNr; a.RdNr = RdInput.SelectedItem.GetType() == typeof(NullItem) ? null : ((WbRd)RdInput.SelectedItem).RdNr;
a.GstNr = GstNrInput.Text; a.GstNr = GstNrInput.Text;
a.Area = int.Parse(AreaInput.Text); a.Area = int.Parse(AreaInput.Text);
a.VtrgId = (AreaComTypeInput.SelectedItem as AreaComType)?.VtrgId; a.VtrgId = (AreaComTypeInput.SelectedItem as AreaComType)!.VtrgId;
a.CultId = (WineCultivationInput.SelectedItem as WineCult)?.CultId; a.CultId = (WineCultivationInput.SelectedItem as WineCult)!.CultId;
a.Comment = (CommentInput.Text == "") ? null : CommentInput.Text; a.Comment = (CommentInput.Text == "") ? null : CommentInput.Text;
EntityEntry<AreaCom>? tr = null; EntityEntry<AreaCom>? tr = null;
@ -275,7 +275,7 @@ namespace Elwig.Windows {
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
} }
return a; return a!;
} }
private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) { private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) {

View File

@ -1 +1 @@
curl -s -L "https://www.necronda.net/elwig/files/create.sql?v=16" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql" curl -s -L "https://www.necronda.net/elwig/files/create.sql?v=17" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql"