diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index 3291c42..f6b91e1 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -10,6 +10,7 @@ using System.Net.Sockets; using Elwig.Dialogs; using System.Text; using System.Numerics; +using Elwig.Models; namespace Elwig.Helpers { public static partial class Utils { @@ -21,6 +22,7 @@ namespace Elwig.Helpers { public static readonly Regex SerialRegex = GeneratedSerialRegex(); public static readonly Regex TcpRegex = GeneratedTcpRegex(); + public static readonly Regex PartialDateRegex = GeneratedPartialDateRegex(); [GeneratedRegex("^serial://([A-Za-z0-9]+):([0-9]+)(,([5-9]),([NOEMSnoems]),(0|1|1\\.5|2|))?$", RegexOptions.Compiled)] private static partial Regex GeneratedSerialRegex(); @@ -28,6 +30,9 @@ namespace Elwig.Helpers { [GeneratedRegex("^tcp://([A-Za-z0-9._-]+):([0-9]+)$", RegexOptions.Compiled)] private static partial Regex GeneratedTcpRegex(); + [GeneratedRegex(@"^(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[0-2])\.$", RegexOptions.Compiled)] + private static partial Regex GeneratedPartialDateRegex(); + private static readonly ushort[] Crc16ModbusTable = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, @@ -242,5 +247,15 @@ namespace Elwig.Helpers { 0 => "\u00b1", // plus minus > 0 => "+", }; + + public static double AggregateDeliveryPartsKmw(IEnumerable parts) + => parts.Aggregate( + (Weight: 0, Kmw: 0.0), + (sum, item) => ( + sum.Weight + item.Weight, + (sum.Kmw * sum.Weight + item.Kmw * item.Weight) / (sum.Weight + item.Weight) + ), + sum => sum.Kmw + ); } } diff --git a/Elwig/Models/Delivery.cs b/Elwig/Models/Delivery.cs index 7692189..4886d67 100644 --- a/Elwig/Models/Delivery.cs +++ b/Elwig/Models/Delivery.cs @@ -84,20 +84,13 @@ namespace Elwig.Models { public string SortIdString => string.Join(", ", SortIds); - public double Kmw => Parts.Aggregate( - (Weight: 0, Kmw: 0.0), - (sum, item) => ( - sum.Weight + item.Weight, - (sum.Kmw * sum.Weight + item.Kmw * item.Weight) / (sum.Weight + item.Weight) - ), - sum => sum.Kmw - ); + public double Kmw => Utils.AggregateDeliveryPartsKmw(Parts); public double Oe => Utils.KmwToOe(Kmw); public int SearchScore(IEnumerable keywords) { var list = new string?[] { - LsNr, Date.ToString("dd.MM.yyyy"), Time?.ToString("HH:mm"), + LsNr, Time?.ToString("HH:mm"), Member.FamilyName, Member.MiddleName, Member.GivenName, Member.BillingAddress?.Name, Comment }.ToList(); diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index 51dcf87..d84cb44 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Elwig.Windows" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" - Title="Lieferungsverwaltung - Elwig" Height="700" Width="1100" MinHeight="700" MinWidth="1000" + Title="Lieferungsverwaltung - Elwig" Height="720" Width="1100" MinHeight="700" MinWidth="1000" Loaded="Window_Loaded">