diff --git a/Elwig/Models/Entities/Delivery.cs b/Elwig/Models/Entities/Delivery.cs index f7721a5..c05f079 100644 --- a/Elwig/Models/Entities/Delivery.cs +++ b/Elwig/Models/Entities/Delivery.cs @@ -68,19 +68,32 @@ namespace Elwig.Models.Entities { [InverseProperty("Delivery")] public virtual ISet Parts { get; private set; } + [NotMapped] + public IEnumerable FilteredParts => PartFilter == null ? Parts : Parts.Where(p => PartFilter(p)); + + [NotMapped] + public Predicate? PartFilter { get; set; } public int Weight => Parts.Select(p => p.Weight).Sum(); + public int FilteredWeight => FilteredParts.Select(p => p.Weight).Sum(); public IEnumerable SortIds => Parts .GroupBy(p => p.SortId) .OrderByDescending(g => g.Select(p => p.Weight).Sum()) - .Select(g => g.Select(p => p.SortId).First()); + .Select(g => g.Key); + public IEnumerable FilteredSortIds => FilteredParts + .GroupBy(p => p.SortId) + .OrderByDescending(g => g.Select(p => p.Weight).Sum()) + .Select(g => g.Key); public string SortIdString => string.Join(", ", SortIds); + public string FilteredSortIdString => string.Join(", ", FilteredSortIds); public double Kmw => Utils.AggregateDeliveryPartsKmw(Parts); + public double FilteredKmw => Utils.AggregateDeliveryPartsKmw(FilteredParts); public double Oe => Utils.KmwToOe(Kmw); + public double FilteredOe => Utils.KmwToOe(FilteredKmw); public int SearchScore(IEnumerable keywords) { var list = new string?[] { diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index a1ac8c5..001149e 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -148,21 +148,21 @@ - + - + - +