From df4e2543058826893b15615ceed868a5ed4ed491 Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Wed, 19 Jul 2023 22:09:45 +0200
Subject: [PATCH] Add Lieferungen Button in MemberAdminWindow

---
 Elwig/Windows/AreaComAdminWindow.xaml.cs  |  5 +++--
 Elwig/Windows/DeliveryAdminWindow.xaml    | 25 +++++++++++++++--------
 Elwig/Windows/DeliveryAdminWindow.xaml.cs |  9 +++++++-
 Elwig/Windows/MemberAdminWindow.xaml      |  3 +--
 Elwig/Windows/MemberAdminWindow.xaml.cs   |  9 +++++++-
 5 files changed, 37 insertions(+), 14 deletions(-)

diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs
index a4f5eee..e076374 100644
--- a/Elwig/Windows/AreaComAdminWindow.xaml.cs
+++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs
@@ -5,14 +5,15 @@ using System.Windows.Controls;
 using Elwig.Helpers;
 using Elwig.Models;
 using System.Threading.Tasks;
+using System;
 
 namespace Elwig.Windows {
     public partial class AreaComAdminWindow : AdministrationWindow {
         private readonly Member Member;
 
-        public AreaComAdminWindow(Member member) {
+        public AreaComAdminWindow(int mgnr) {
             InitializeComponent();
-            Member = member;
+            Member = Context.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value");
             Title = $"Flächenbindungen - {Member.AdministrativeName} - Elwig";
             ExemptInputs = new Control[] {
                 MgNrInput, ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton,
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml
index f6d3497..555ea57 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml
@@ -69,7 +69,7 @@
             <Grid.RowDefinitions>
                 <RowDefinition Height="42"/>
                 <RowDefinition Height="*"/>
-                <RowDefinition Height="47"/>
+                <RowDefinition Height="42"/>
             </Grid.RowDefinitions>
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="*"/>
@@ -105,18 +105,18 @@
             </DataGrid>
 
             <Button x:Name="NewMemberButton" Content="Neu"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="0" Grid.Row="2"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0" Grid.Row="2"/>
             <Button x:Name="EditMemberButton" Content="Bearbeiten" IsEnabled="False"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="1" Grid.Row="2"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1" Grid.Row="2"/>
             <Button x:Name="DeleteMemberButton" Content="Löschen" IsEnabled="False"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="2" Grid.Row="2"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2" Grid.Row="2"/>
 
             <Button x:Name="SaveButton" Content="Speichern" IsEnabled="False" Visibility="Hidden"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="0"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,5,2.5,10" Grid.Column="0"/>
             <Button x:Name="ResetButton" Content="Zurücksetzen" IsEnabled="False" Visibility="Hidden"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="1"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,2.5,10" Grid.Column="1"/>
             <Button x:Name="CancelButton" Content="Abbrechen" IsEnabled="False" Visibility="Hidden" IsCancel="True"
-                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,5,10" Grid.Column="2"/>
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,5,5,10" Grid.Column="2"/>
         </Grid>
 
         <GroupBox Header="Mitglied" Grid.Column="1" Grid.Row="1" Margin="5,5,5,5">
@@ -288,7 +288,11 @@
 
         <GroupBox Header="Teillieferungen" Grid.Column="1" Grid.Row="3" Margin="5,5,5,5">
             <Grid>
-                <ListBox x:Name="DeliveryPartList" Margin="5,5,5,5"
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition/>
+                    <ColumnDefinition/>
+                </Grid.ColumnDefinitions>
+                <ListBox x:Name="DeliveryPartList" Margin="5,5,5,38" Grid.ColumnSpan="2"
                          SelectionChanged="DeliveryPartList_SelectionChanged">
                     <ListBox.ItemTemplate>
                         <DataTemplate>
@@ -302,6 +306,11 @@
                         </DataTemplate>
                     </ListBox.ItemTemplate>
                 </ListBox>
+
+                <Button x:Name="ExtractDeliveryPartButton" Content="Herausheben" IsEnabled="False"
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,2.5,5" Grid.Column="0" Grid.Row="2"/>
+                <Button x:Name="DeleteDeliveryPartButton" Content="Löschen" IsEnabled="False"
+                    HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="2.5,10,5,5" Grid.Column="1" Grid.Row="2"/>
             </Grid>
         </GroupBox>
 
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
index c6cdb53..0330431 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
@@ -17,6 +17,7 @@ namespace Elwig.Windows {
         private bool IsUpdatingGradation = false;
         private bool IsRefreshingInputs = false;
         private readonly bool IsReceipt = false;
+        private readonly Member? Member = null;
         private readonly DispatcherTimer Timer;
         private List<string> TextFilter = new();
         private readonly RoutedCommand CtrlF = new();
@@ -50,10 +51,13 @@ namespace Elwig.Windows {
 
         public DeliveryAdminWindow(bool receipt) : this() {
             IsReceipt = receipt;
+            Title = "Übernahme - Elwig";
+            TodayOnlyInput.IsChecked = true;
         }
 
         public DeliveryAdminWindow(int mgnr) : this() {
-            // TODO
+            Member = Context.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value");
+            Title = $"Lieferungen - {Member.AdministrativeName} - Elwig";
         }
 
         private void Window_Loaded(object sender, RoutedEventArgs evt) {
@@ -81,6 +85,9 @@ namespace Elwig.Windows {
 
         private async Task RefreshDeliveryListQuery(bool updateSort = false) {
             IQueryable<Delivery> deliveryQuery = Context.Deliveries;
+            if (Member != null) {
+                deliveryQuery = deliveryQuery.Where(d => d.MgNr == Member.MgNr);
+            }
             if (TodayOnlyInput.IsChecked == true) {
                 deliveryQuery = deliveryQuery
                     .Where(d => (d.DateString == Utils.Today.ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") > 0) || 
diff --git a/Elwig/Windows/MemberAdminWindow.xaml b/Elwig/Windows/MemberAdminWindow.xaml
index d9cab7c..f022bc3 100644
--- a/Elwig/Windows/MemberAdminWindow.xaml
+++ b/Elwig/Windows/MemberAdminWindow.xaml
@@ -346,9 +346,8 @@
                 <TextBlock x:Name="AreaCommitment" Text="- m²"
                            Grid.Column="1" HorizontalAlignment="Stretch" Margin="5,252,5,0" TextWrapping="NoWrap" VerticalAlignment="Top" FontSize="14" TextAlignment="Right"/>
 
-                <Button x:Name="DeliveryButton" Content="Lieferungen" Click="AreaCommitmentButton_Click" IsEnabled="False"
+                <Button x:Name="DeliveryButton" Content="Lieferungen" Click="DeliveryButton_Click" IsEnabled="False"
                         HorizontalAlignment="Right" Margin="10,00,10,37" Width="150" VerticalAlignment="Bottom" Grid.ColumnSpan="3"/>
-
                 <Button x:Name="AreaCommitmentButton" Content="Flächenbindungen" Click="AreaCommitmentButton_Click" IsEnabled="False"
                         HorizontalAlignment="Right" Margin="10,10,10,5" Width="150" VerticalAlignment="Bottom" Grid.ColumnSpan="3"/>
             </Grid>
diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs
index be8dcb1..cb2b287 100644
--- a/Elwig/Windows/MemberAdminWindow.xaml.cs
+++ b/Elwig/Windows/MemberAdminWindow.xaml.cs
@@ -103,11 +103,13 @@ namespace Elwig.Windows {
                 EditMemberButton.IsEnabled = true;
                 DeleteMemberButton.IsEnabled = true;
                 AreaCommitmentButton.IsEnabled = true;
+                DeliveryButton.IsEnabled = true;
                 FillInputs(m);
             } else {
                 EditMemberButton.IsEnabled = false;
                 DeleteMemberButton.IsEnabled = false;
                 AreaCommitmentButton.IsEnabled = false;
+                DeliveryButton.IsEnabled = false;
                 ClearOriginalValues();
                 ClearInputs();
             }
@@ -247,7 +249,12 @@ namespace Elwig.Windows {
         }
 
         private void AreaCommitmentButton_Click(object sender, RoutedEventArgs evt) {
-            var w = new AreaComAdminWindow((Member)MemberList.SelectedItem);
+            var w = new AreaComAdminWindow(((Member)MemberList.SelectedItem).MgNr);
+            w.Show();
+        }
+
+        private void DeliveryButton_Click(object sender, RoutedEventArgs evt) {
+            var w = new DeliveryAdminWindow(((Member)MemberList.SelectedItem).MgNr);
             w.Show();
         }