diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs index b007d5d..083660b 100644 --- a/Elwig/Helpers/AppDbContext.cs +++ b/Elwig/Helpers/AppDbContext.cs @@ -243,6 +243,8 @@ namespace Elwig.Helpers { modelBuilder.Entity().Navigation(a => a.Schedule).AutoInclude(); modelBuilder.Entity().Navigation(a => a.Variety).AutoInclude(); modelBuilder.Entity().Navigation(s => s.Branch).AutoInclude(); + modelBuilder.Entity().Navigation(s => s.Attribute).AutoInclude(); + modelBuilder.Entity().Navigation(s => s.Cultivation).AutoInclude(); modelBuilder.Entity().Navigation(s => s.FromMember).AutoInclude(); modelBuilder.Entity().Navigation(s => s.ToMember).AutoInclude(); modelBuilder.Entity().Navigation(s => s.Currency).AutoInclude(); diff --git a/Elwig/Models/Entities/DeliverySchedule.cs b/Elwig/Models/Entities/DeliverySchedule.cs index 63bfdf0..3b284e0 100644 --- a/Elwig/Models/Entities/DeliverySchedule.cs +++ b/Elwig/Models/Entities/DeliverySchedule.cs @@ -38,6 +38,8 @@ namespace Elwig.Models.Entities { [Column("cultid")] public string? CultId { get; set; } + [NotMapped] + public bool IsOrganic => Cultivation?.IsOrganic ?? false; [Column("max_weight")] public int? MaxWeight { get; set; } diff --git a/Elwig/Resources/Sql/41-42.sql b/Elwig/Resources/Sql/41-42.sql index aa96f58..f061c60 100644 --- a/Elwig/Resources/Sql/41-42.sql +++ b/Elwig/Resources/Sql/41-42.sql @@ -20,6 +20,8 @@ UPDATE wine_cultivation SET organic = TRUE WHERE name LIKE '%bio%' OR name LIKE UPDATE wine_cultivation SET description = NULL WHERE description LIKE '%AT-BIO-%'; UPDATE wine_cultivation SET description = 'Biologische Produktion' WHERE organic; +UPDATE delivery_schedule SET cultid = (SELECT cultid FROM wine_cultivation WHERE organic LIMIT 1) WHERE description LIKE '%Bio%'; + UPDATE client_parameter SET param = 'CLIENT_ORGANIC_AUTHORITYCODE' WHERE param = 'CLIENT_ORGANIC_AUTHORITY'; diff --git a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs index 98ea008..8960fac 100644 --- a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs @@ -208,8 +208,28 @@ namespace Elwig.Windows { } } - private void DeliveryScheduleInput_SelectionChanged(object sender, RoutedEventArgs evt) { + private bool CheckOrganic(bool confirm = false) { + if (DeliveryScheduleInput.SelectedItem is not DeliverySchedule s || MemberInput.SelectedItem is not Member m) { + return true; + } else if (s.IsOrganic) { + if (m.IsOrganic) { + return true; + } else { + if (confirm) { + return InteractionService.AskConfirmation("Kein Bio-Betrieb", "Soll die Bio-Anmeldung wirklich gespeichert werden, obwohl das Mitglied keinen Bio-Betrieb hat?"); + } else { + InteractionService.ShowWarning("Kein Bio-Betrieb", "Achtung! Bio-Anmeldung ohne Bio-Betrieb!"); + } + } + return false; + } else { + return true; + } + } + private void DeliveryScheduleInput_SelectionChanged(object sender, RoutedEventArgs evt) { + if (IsEditing || IsCreating) + CheckOrganic(); } private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) { @@ -258,6 +278,8 @@ namespace Elwig.Windows { var m = MemberInput.SelectedItem as Member; ViewModel.MgNr = m?.MgNr; ViewModel.MemberAddress = m?.FullAddress; + if (IsCreating) + CheckOrganic(); } protected override void ShortcutNew() { @@ -334,6 +356,9 @@ namespace Elwig.Windows { } private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) { + if (!CheckOrganic(true)) + return; + Mouse.OverrideCursor = Cursors.Wait; SaveButton.IsEnabled = false;