Преглед изворни кода

Restricted staging manufacturing treatments to a smaller list

Kenric Nugteren пре 1 година
родитељ
комит
77539515db
1 измењених фајлова са 20 додато и 2 уклоњено
  1. 20 2
      prs.classes/Entities/Product/ProductLookups.cs

+ 20 - 2
prs.classes/Entities/Product/ProductLookups.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using InABox.Core;
 
 namespace Comal.Classes
@@ -33,11 +34,28 @@ namespace Comal.Classes
         // Filters for Manufacturing Treament Codes 
         public Filter<Product> DefineFilter(StagingManufacturingPacketTreatment[] items)
         {
-            return DefineFilter().And(x => x.IsManufacturingTreatment).IsEqualTo(true);
+            var jobs = items.Select(x => x.Packet.Job.ID).Distinct().ToArray();
+
+            if(jobs.Length == 0)
+            {
+                return DefineFilter().And(x => x.IsManufacturingTreatment).IsEqualTo(true);
+            }
+            else
+            {
+                var jobStyleFilters = new Filters<JobStyle>();
+                foreach(var job in jobs)
+                {
+                    jobStyleFilters.Add(new Filter<JobStyle>(x => x.Job.ID).IsEqualTo(job));
+                }
+                return DefineFilter().And(x => x.IsManufacturingTreatment).IsEqualTo(true)
+                    .And(x => x.ID).InQuery(
+                        new Filter<ProductStyle>(x => x.ID).InQuery(jobStyleFilters.Combine(), x => x.Style.ID),
+                        x => x.ManufacturingTreatmentProduct.ID);
+            }
         }
 
         Columns<StagingManufacturingPacketTreatment> ILookupDefinition<Product, StagingManufacturingPacketTreatment>.DefineFilterColumns()
-            => new Columns<StagingManufacturingPacketTreatment>();
+            => new Columns<StagingManufacturingPacketTreatment>(x => x.Packet.Job.ID);
         
         // Filters for Manufacturing Treament Codes 
         public Filter<Product> DefineFilter(ManufacturingTreatment[] items)