public SeasonClassificationResponse(bool hasSeasonData, MultipleLineGraphData <X, Y>?graphData) { HasSeasonData = hasSeasonData; if (hasSeasonData) { if (graphData is null) { throw new ArgumentNullException(nameof(graphData)); } } GraphData = graphData; }
/// <summary> /// Get structured data about mmr relative to a group of players. /// </summary> public SeasonClassificationResponse <DateTime, int> GetMmrClassificationData(int?season = null) { season = season ?? _seasonService.CurrentSeason; if (!_seasonService.TryGetBoundaries(season.Value, out var boundaries)) { return(new SeasonClassificationResponse <DateTime, int>(false, null)); } IReadOnlyList <MmrSnapshot> data = GetMmrList(season.Value); DateTime[] timeValues = data.Select(s => s.SnapshotTime).ToArray(); var classificationsData = new List <DataSet <int> >(); foreach (var classification in boundaries !.MmrBoundaries) { IEnumerable <int> playerCountValues = data.Select(s => classification.GetPlayerCountInClassification(s)); classificationsData.Add(new DataSet <int>(classification.Name, playerCountValues.ToArray())); } var graphData = new MultipleLineGraphData <DateTime, int>("Time", "Number of players", timeValues, classificationsData.ToArray()); return(new SeasonClassificationResponse <DateTime, int>(true, graphData)); }