コード例 #1
0
        public IReadOnlyDictionary <Expert, PredictionsResultAccumulator> GroupPredictionsResultsByExpert(IEnumerable <Match> matches)
        {
            var predictionResultsByExpert = new Dictionary <Expert, PredictionsResultAccumulator>();

            foreach (var match in matches)
            {
                foreach (var prediction in match.Predictions.OrEmptyIfNull())
                {
                    if (!prediction.IsClosed)
                    {
                        predictionResultsByExpert.Clear();
                        throw new ArgumentException("All predictions must be closed.");
                    }

                    var expert = prediction.Expert;

                    if (predictionResultsByExpert.ContainsKey(expert))
                    {
                        var predictionsResult = predictionResultsByExpert[expert];
                        predictionsResult.AddResult(prediction.Result);
                    }
                    else
                    {
                        var predictionsResult = new PredictionsResultAccumulator();
                        predictionsResult.AddResult(prediction.Result);

                        predictionResultsByExpert[expert] = predictionsResult;
                    }
                }
            }
            return(predictionResultsByExpert);
        }
コード例 #2
0
        public ExpertStatsReadDto(Expert expert, PredictionsResultAccumulator predictionsResult, int sum)
        {
            ExpertId = expert.Id;
            Nickname = expert.Nickname;

            Outcomes    = predictionsResult.Outcomes;
            Differences = predictionsResult.Differences;
            Scores      = predictionsResult.Scores;

            Sum = sum;
        }