public async Task <bool> UpdateAsync(TeamRosterEntity entity) { return(await _table.UpdateAsync(entity)); }
public async Task <bool> CreateNewTeamAsync(IEnumerable <Guid> summonerIds) { var seasonInfo = await _seasonInfoRepository.GetCurrentSeasonAsync(); summonerIds = summonerIds.ToList(); var result = false; try { var summonerIdsList = summonerIds.ToList(); var temp = new List <Guid>(summonerIds); foreach (var summonerId in temp) { var playerRecord = await _teamPlayerRepository.GetRosterIdForExistingGroupAsync( new List <Guid> { summonerId }, seasonInfo.Id); if (playerRecord != null) { summonerIdsList.Remove(summonerId); } } var summoners = (await _summonerInfoRepository.GetAllForSummonerIdsAsync(summonerIdsList)).ToList(); if (summoners.Count < MinTeamCountRequirement) { throw new Exception("Cannot make a team with less than 5 players"); } var teamTierScores = new List <int>(); var teamPlayers = new List <TeamPlayerEntity>(); foreach (var summoner in summoners) { teamPlayers.Add(new TeamPlayerEntity { SummonerId = summoner.Id, SeasonInfoId = seasonInfo.Id }); var currentTierScore = int.Parse((await _lookupRepository.GetLookupEntity(summoner.Tier_DivisionId)).Value); var previousTierScore = summoner.PreviousSeasonRankId != null ? int.Parse((await _lookupRepository.GetLookupEntity(summoner.Tier_DivisionId)).Value) : 0; var tierScore = Math.Max(currentTierScore, previousTierScore); teamTierScores.Add(tierScore + summoner.CurrentLp); } var teamsCount = (await _teamRosterRepository.GetAllTeamsAsync(seasonInfo.Id)).Count(); var teamTierScore = teamTierScores.OrderByDescending(x => x).Take(MinTeamCountRequirement).Sum(); var team = new TeamRosterEntity { Id = Guid.NewGuid(), TeamName = $"Team{teamsCount+1}", TeamTierScore = teamTierScore / MinTeamCountRequirement, SeasonInfoId = seasonInfo.Id }; var createTeamResult = await _teamRosterRepository.CreateAsync(team); if (!createTeamResult) { throw new Exception("Failed to create team entity"); } teamPlayers.ForEach(x => x.TeamRosterId = team.Id); result = await _teamPlayerRepository.InsertAsync(teamPlayers); } catch (Exception e) { _logger.LogError(e, "Error for Admin Create Team process."); } return(result); }
public async Task <bool> CreateAsync(TeamRosterEntity entity) { return(await _table.InsertAsync(entity) == 1); }