private async Task <Result> ValidateAndGenerateResultAsync(PostResultRequest toAdd)
        {
            var season   = Season.FromISOString(toAdd.Season);
            var standing = await _dbContext.Standings
                           .Include(s => s.ResultsDuringTheSeason)
                           .Include(s => s.League)
                           .ThenInclude(l => l.Teams)
                           .SingleOrDefaultAsync(s => s.SeasonId == season.FullName && s.LeagueId == toAdd.LeagueName);

            bool standingExists = standing != null;

            if (!standingExists)
            {
                throw new ArgumentException("Can't add the given result as there is no such standing that corresponds to this combination of year/league");
            }

            var homeTeamEntity = standing.League.Teams.FirstOrDefault(
                t => t.Name.Equals(toAdd.HomeTeamName));
            var awayTeamEntity = standing.League.Teams.FirstOrDefault(
                t => t.Name.Equals(toAdd.AwayTeamName));

            if (homeTeamEntity == null || awayTeamEntity == null)
            {
                throw new ArgumentException("One of the teams, part of this result, does not exist");
            }

            var entityToAdd = Result.FromRequest(toAdd);

            entityToAdd.HomeTeam = homeTeamEntity;
            entityToAdd.AwayTeam = awayTeamEntity;
            return(entityToAdd);
        }
        public async Task <(string, ResultDTO)> AddAsync(PostResultRequest toAdd)
        {
            var result = await ValidateAndGenerateResultAsync(toAdd);

            var resultAsDto = result.ToDto();


            await _standingsService.UpdateMatchAsync(resultAsDto, false);

            return("todo: generate URL", resultAsDto);
        }
Exemple #3
0
        public async Task <ActionResult> PostResult(PostResultRequest postResultRequest)
        {
            {
                try
                {
                    var result = await _resultService.AddAsync(postResultRequest);

                    return(Created(result.url, result.createdDto));
                }
                catch (ArgumentException aEx)
                {
                    return(BadRequest(aEx.Message));
                }
            }
        }