private async Task UpdateTeamRankings( int teamId, int score, CancellationToken cancellationToken = default) { try { Entities.Rank rank = await _context.Ranks .FirstOrDefaultAsync(r => r.TeamId == teamId); if (rank == null) { throw new ArgumentException($"Invalid team Id { teamId }."); } rank.Points += score; await _context.SaveChangesAsync(cancellationToken); } catch (ServiceException) { throw; } catch (Exception ex) { _logger.LogError(ex, "Erorr deleting Match."); throw Conversion.ConvertException(ex); } }
public async Task <int> CreateTeamAsync( CreateTeamRequest request, CancellationToken cancellationToken = default) { try { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (string.IsNullOrEmpty(request.Name)) { throw new ArgumentException(); } bool isNameTaken = await _context.Teams.AnyAsync(t => t.Name == request.Name); if (isNameTaken) { throw new ArgumentException("There is already team with the same name."); } var teamEntity = new Entities.Team { Name = request.Name }; var rankEntity = new Entities.Rank { // Starting points Points = 0, }; teamEntity.Rank = rankEntity; _context.Teams.Add(teamEntity); await _context.SaveChangesAsync(cancellationToken); return(teamEntity.Id); } catch (ServiceException) { throw; } catch (Exception ex) { _logger.LogError(ex, "Error creating team."); throw Conversion.ConvertException(ex); } }