فهرست منبع

Changes to FilterButtonComponent interface slightly

Kenric Nugteren 6 ماه پیش
والد
کامیت
b63e397451

+ 1 - 1
prs.desktop/Grids/TimesheetGrid.cs

@@ -28,7 +28,7 @@ namespace PRSDesktop
             {
                 if (value is not null)
                 {
-                    Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                    Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
                 }
             }
         }

+ 1 - 1
prs.desktop/Panels/Customers/CustomerReceipts.cs

@@ -26,7 +26,7 @@ public class ReceiptGridSettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 1 - 1
prs.desktop/Panels/DataEntry/DataEntryHistory.cs

@@ -26,7 +26,7 @@ public class DataEntryHistorySettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 1 - 1
prs.desktop/Panels/Invoices/InvoiceGrid.cs

@@ -32,7 +32,7 @@ namespace PRSDesktop
             {
                 if (value is not null)
                 {
-                    Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                    Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
                 }
             }
         }

+ 1 - 1
prs.desktop/Panels/Jobs/ProjectsGrid.cs

@@ -28,7 +28,7 @@ public class JobGridSettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 1 - 1
prs.desktop/Panels/PurchaseOrders/SupplierPurchaseOrders.cs

@@ -28,7 +28,7 @@ public class SupplierPurchaseOrdersSettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 1 - 1
prs.desktop/Panels/Reservation Management/ReservationManagementUserSettings.cs

@@ -21,7 +21,7 @@ public class ReservationManagementUserSettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 1 - 1
prs.desktop/Panels/Staging/Setouts/StagingSetoutGrid.cs

@@ -31,7 +31,7 @@ public class StagingSetoutGridSettings : IUserConfigurationSettings
         {
             if (value is not null)
             {
-                Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
+                Filters = new DynamicGridSelectedFilterSettings(new List<ICoreFilterDefinition> { value }, false, null);
             }
         }
     }

+ 26 - 1
prs.desktop/Panels/Suppliers/Bills/SupplierBills.cs

@@ -14,6 +14,11 @@ using NPOI.Util;
 
 namespace PRSDesktop;
 
+public class SupplierBillsSettings : IUserConfigurationSettings
+{
+    public DynamicGridSelectedFilterSettings Filters { get; set; } = new();
+}
+
 public class SupplierBills : DynamicDataGrid<Bill>
 {
     private static readonly BitmapImage? tick = PRSDesktop.Resources.tick.AsBitmapImage();
@@ -21,12 +26,17 @@ public class SupplierBills : DynamicDataGrid<Bill>
     private static readonly BitmapImage? check = PRSDesktop.Resources.checklist.AsBitmapImage();
 
     private SupplierBillPanelProperties _settings = null;
+    private SupplierBillsSettings _userSettings;
     
     public SupplierBills()
     {
-        
         _settings = new GlobalConfiguration<SupplierBillPanelProperties>().Load();
 
+        _userSettings = new UserConfiguration<SupplierBillsSettings>().Load();
+        FilterComponent.BuiltInFilters.Add(new("My Unapproved Bills", GetMyUnapprovedBillsFilter));
+        FilterComponent.SetSettings(_userSettings.Filters, false);
+        FilterComponent.OnFiltersSelected += FilterComponent_OnFilterSelected;
+
         HiddenColumns.Add(x => x.IsApproved);
         HiddenColumns.Add(x => x.DataEntered);
         HiddenColumns.Add(x => x.Checked);
@@ -41,6 +51,15 @@ public class SupplierBills : DynamicDataGrid<Bill>
         ActionColumns.Add(new DynamicMenuColumn(BuildMenu));
     }
 
+    private Filter<Bill> GetMyUnapprovedBillsFilter()
+    {
+        return new Filter<Bill>(x => x.ID)
+            .InQuery(
+                new Filter<BillApproval>(x => x.Employee.ID).IsEqualTo(App.EmployeeID)
+                    .And(x => x.Approved).IsEqualTo(DateTime.MinValue),
+                x => x.Bill.ID);
+    }
+
     private void BuildMenu(DynamicMenuColumn column, CoreRow? row)
     {
         if (row is null) return;
@@ -234,4 +253,10 @@ public class SupplierBills : DynamicDataGrid<Bill>
             errors.Add($"[{nameof(Bill.SupplierLink)}] may not be blank!");
         }
     }
+    
+    private void FilterComponent_OnFilterSelected(DynamicGridSelectedFilterSettings settings)
+    {
+        _userSettings.Filters = settings;
+        new UserConfiguration<SupplierBillsSettings>().Save(_userSettings);
+    }
 }