コード例 #1
0
        public void TestTeamsSumDescending(StatisticsModel[] model)
        {
            var actualResult = TeamsStatistics.CalculateStatistic(
                model.Select(x => new Tuple <int, int>(x.TeamID, x.Score)),
                TeamsStatistics.StatisticType.Sum,
                TeamsStatistics.StatisticOrder.Descending);

            Assert.Equal(EXPECTED_TEAMS_SUM_DESCENDING, actualResult);
        }
コード例 #2
0
        public void TestTeamsAverageAscending(StatisticsModel[] model)
        {
            var actualResult = TeamsStatistics.CalculateStatistic(
                model.Select(x => new Tuple <int, int>(x.TeamID, x.Score)),
                TeamsStatistics.StatisticType.Average,
                TeamsStatistics.StatisticOrder.Ascending);

            Assert.Equal(EXPECTED_TEAMS_AVERAGE_ASCENDING, actualResult);
        }
        public async Task <IActionResult> Statistics(StatisticsType statisticsType)
        {
            try
            {
                Teams team;

                switch (statisticsType)
                {
                case StatisticsType.MaxGoalsFor:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.GoalsFor, TeamsStatistics.StatisticType.Average, TeamsStatistics.StatisticOrder.Descending);

                    break;

                case StatisticsType.MinGoalsAgainst:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.GoalsAgainst, TeamsStatistics.StatisticType.Average, TeamsStatistics.StatisticOrder.Ascending);

                    break;

                case StatisticsType.MaxWon:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.Won, TeamsStatistics.StatisticType.Sum, TeamsStatistics.StatisticOrder.Descending);

                    break;

                case StatisticsType.MinWon:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.Won, TeamsStatistics.StatisticType.Sum, TeamsStatistics.StatisticOrder.Ascending);

                    break;

                case StatisticsType.BestAvaregeWons:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.Won, TeamsStatistics.StatisticType.Average, TeamsStatistics.StatisticOrder.Descending);

                    break;

                case StatisticsType.WorseAvaregeWons:
                    team = await TeamsStatistics.GetStatistics(_ctx, x => x.Won, TeamsStatistics.StatisticType.Average, TeamsStatistics.StatisticOrder.Ascending);

                    break;

                default:
                    return(NotFound());
                }

                _logger.Log(LogLevel.Information, $"Successfully returned the statistic {statisticsType}.");
                return(Ok(team.Name));
            }
            catch (SqliteException dbEx)
            {
                _logger.LogError($"Error in database when trying get the statistic {statisticsType}: {dbEx.Message}. {dbEx.StackTrace}");
#if DEBUG
                throw;
#else
                return(Problem($"Error in database when trying get the statistic {statisticsType}."));
#endif
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error when trying get the statistic {statisticsType}: {ex.Message}. {ex.StackTrace}");
#if DEBUG
                throw;
#else
                return(Problem($"Error in database when trying get the statistic {statisticsType}."));
#endif
            }
        }