Dtos: merge under/over delivery with percent column

This commit is contained in:
2023-11-15 22:16:13 +01:00
parent 6e0da28ea3
commit 22318e1b9a
2 changed files with 7 additions and 16 deletions

View File

@ -19,8 +19,7 @@ namespace Elwig.Models.Dtos {
("Areas", "Fläche", "m²", 16),
("DeliveryObligations", "Lieferpflicht", "kg", 22),
("Weights", "Geliefert", "kg", 22),
("UnderDeliveries", "Unterliefert", "kg", 22),
("Percents", "Prozent", "%", 16),
("UnderDeliveries", "Unterliefert", "kg|%", 34),
};
public AreaComUnderDeliveryData(IEnumerable<AreaComUnderDeliveryRow> rows, int year) :
@ -61,11 +60,8 @@ namespace Elwig.Models.Dtos {
public int[] Areas;
public int[] DeliveryObligations;
public int[] Weights;
public int?[] UnderDeliveries => Weights.Zip(DeliveryObligations)
.Select(v => v.First < v.Second ? (int?)v.First - v.Second : null)
.ToArray();
public double?[] Percents => Weights.Zip(DeliveryObligations)
.Select(v => v.First < v.Second ? (double?)v.First * 100.0 / v.Second - 100.0 : null)
public (int? Kg, double? Percent)[] UnderDeliveries => Weights.Zip(DeliveryObligations)
.Select(v => v.First < v.Second ? ((int?, double?))(v.First - v.Second, v.First * 100.0 / v.Second - 100.0) : (null, null))
.ToArray();
public AreaComUnderDeliveryRow(IEnumerable<AreaComUnderDeliveryRowSingle> rows) {

View File

@ -18,8 +18,7 @@ namespace Elwig.Models.Dtos {
("DeliveryObligation", "Lieferpflicht", "kg", 22),
("DeliveryRight", "Lieferrecht", "kg", 22),
("Weight", "Geliefert", "kg", 22),
("OverUnderDelivery", "Über-/Unterliefert", "kg", 35),
("Percent", "Prozent", "%", 16),
("OverUnderDelivery", "Über-/Unterliefert", "kg|%", 34),
};
public OverUnderDeliveryData(IEnumerable<OverUnderDeliveryRow> rows, int year) :
@ -70,12 +69,8 @@ namespace Elwig.Models.Dtos {
[Column("sum")]
public int Weight { get; set; }
[NotMapped]
public int? OverUnderDelivery =>
Weight < DeliveryObligation ? Weight - DeliveryObligation :
Weight > DeliveryRight ? Weight - DeliveryRight : null;
[NotMapped]
public double? Percent =>
Weight < DeliveryObligation ? Weight * 100.0 / DeliveryObligation - 100.0 :
Weight > DeliveryRight ? Weight * 100.0 / DeliveryRight - 100 : null;
public (int? Kg, double? Percent) OverUnderDelivery =>
Weight < DeliveryObligation ? (Weight - DeliveryObligation, Weight * 100.0 / DeliveryObligation - 100.0) :
Weight > DeliveryRight ? (Weight - DeliveryRight, Weight * 100.0 / DeliveryRight - 100) : (null, null);
}
}