Beispiel #1
0
        public async Task <IActionResult> SetRoundResults([FromRoute] short year, [FromRoute] byte season, [FromRoute] byte round,
                                                          [FromBody] IList <MatchResultRequest> matchesResults)
        {
            try
            {
                var teams = (await _teamsService.GetYearTeamsAsync(year)).ToDictionary(team => team.Abbreviation.ToLowerInvariant(), team => team);
                foreach (var match in matchesResults)
                {
                    if (!teams.ContainsKey(match.HomeTeamAbbr.ToLowerInvariant()) || !teams.ContainsKey(match.AwayTeamAbbr.ToLowerInvariant()))
                    {
                        throw new ArgumentException($"Teams not found for match {match.HomeTeamAbbr}-{match.AwayTeamAbbr}.");
                    }
                    match.HomeTeamId   = teams[match.HomeTeamAbbr.ToLowerInvariant()].Id;
                    match.AwayTeamId   = teams[match.AwayTeamAbbr.ToLowerInvariant()].Id;
                    match.HomeTeamName = teams[match.HomeTeamAbbr.ToLowerInvariant()].Name;
                    match.AwayTeamName = teams[match.AwayTeamAbbr.ToLowerInvariant()].Name;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error matching teams.", ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, "Error matching teams."));
            }
            try
            {
                await _matchesService.SetRoundResults(year, season, round, _mapper.Map <IList <Match> >(matchesResults,

                                                                                                        opt =>
                {
                    opt.Items["year"]   = year;
                    opt.Items["season"] = season;
                    opt.Items["round"]  = round;
                }));

                _logger.LogDebug($"{matchesResults.Count} matches results set for {year}:{season}:{round}.");

                return(Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error bulk adding matches.", ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, "Error adding matches."));
            }
        }