init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Logic
|
||||
{
|
||||
public static class AtlagLogic
|
||||
{
|
||||
public static decimal? GetSubListAtlag(List<ErtekelesListResponse> ertekelesek)
|
||||
=> (decimal?)ertekelesek.WeightedAverage(x => x.SzamErtek.Value, x => x.SulySzazalekErteke.Value, 2); // TODO ne legyen nullable
|
||||
|
||||
public static decimal GetSimpleAtlag(IEnumerable<decimal> ertekelesek)
|
||||
=> Math.Round(ertekelesek.Average(), 2);
|
||||
|
||||
public static (decimal? SulyozottOsztalyzatOsszege, decimal? SulyozottOsztalyzatSzama, decimal? SulyozottAtlag) GetAtlagTuple(List<ErtekelesListResponse> ertekelesek)
|
||||
=> GetSubListAtlagTuple(ErtekelesLogic.ListAtlagbaSzamitoErtekelesek(ertekelesek).ToList());
|
||||
|
||||
public static (decimal? SulyozottOsztalyzatOsszege, decimal? SulyozottOsztalyzatSzama, decimal? SulyozottAtlag) GetSubListAtlagTuple(List<ErtekelesListResponse> atlagbaSzamitoErtekelesek)
|
||||
=> ((decimal? SulyozottOsztalyzatOsszege, decimal? SulyozottOsztalyzatSzama, decimal? SulyozottAtlag))atlagbaSzamitoErtekelesek.WeightedAverageTuple(x => x.SzamErtek.Value, x => x.SulySzazalekErteke.Value, 2);
|
||||
|
||||
private static (double? weightedValueSum, double? weightSum, double? weightAverage) WeightedAverageTuple<T>(this IEnumerable<T> recordEnumeration, Func<T, double> value, Func<T, double> weight, int? round = null)
|
||||
{
|
||||
if (!recordEnumeration.Any())
|
||||
{
|
||||
return (null, null, null);
|
||||
}
|
||||
|
||||
var weightedValueSum = recordEnumeration.Sum(x => value(x) * weight(x));
|
||||
var weightSum = recordEnumeration.Sum(weight);
|
||||
var weightAverage = round.HasValue && round > 0 ? Math.Round(weightedValueSum / weightSum, round.Value) : weightedValueSum / weightSum;
|
||||
|
||||
return (weightedValueSum, weightSum, weightAverage);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user