public Summoner GetSummoner(string nickname, string server) { Summoner summoner = _client.GetSummonerBySummonerNameAsync(nickname, server).Result; if (summoner != null) { return(summoner); } else { MessageBox.Show("Summoner not found. Maybe another server?", "ERROR"); return(summoner); } }
public async Task <SummonerResponse> FromSummonerName(string name, bool forceReload = false) { TracerPlayer player = null; //check the db Summoner summoner = await client.GetSummonerBySummonerNameAsync(name).ConfigureAwait(false); player = db.TracerPlayers.Include(tp => tp.Summoner) .Include(tp => tp.PlayerStats) .ThenInclude(tp => tp.championStats) .ThenInclude(x => x.Stats) .Where(tp => tp.Summoner.Id == (long)summoner.Id).FirstOrDefault(); if (player == null) { player = new TracerPlayer { Summoner = summoner }; db.TracerPlayers.Add(player); db.SaveChanges(); } player = db.TracerPlayers.Where(tp => tp.Summoner.Id == (long)summoner.Id).FirstOrDefault(); //check riot api if (player.LastUpdate != 0 && !forceReload) { if ((DateTime.Now - DateTime.FromFileTimeUtc(player.LastUpdate)).TotalDays < 5) { return(new SummonerResponse { tracerPlayer = player, requestState = RequestState.Done }); } } if (!player.IsProcesing) { player.IsProcesing = true; db.TracerPlayers.Update(player); db.SaveChanges(); BackgroundJob.Enqueue(() => UpdateStatsAsync(summoner.Id)); } return(new SummonerResponse { tracerPlayer = player, requestState = RequestState.Processing }); ; }
async Task <SummonerData> GetSummoner(string name, string server) { SummonerData summonerData = new SummonerData(); int elo; string info = ""; DateTime start = DateTime.Now; var summoner = await client.GetSummonerBySummonerNameAsync(name, server); if (summoner == null) { return(null); } var leagueEntries = await client.GetLeagueEntriesBySummonerIdAsync(summoner.Id, server); var leagueEntry = leagueEntries.Where(l => l.QueueType == "RANKED_SOLO_5x5").FirstOrDefault(); if (leagueEntry == null) { var matchList = await client.GetMatchListByAccountIdAsync(summoner.AccountId, platformId : server); if (matchList == null) { elo = StaticValues.DefaultElo; info = "No match list. Default value."; } else { var match = await client.GetMatchAsync(matchList.Matches[0].GameId, server); if (match == null) { elo = StaticValues.DefaultElo; info = "Can't get last match. Default value."; } else { info = "Based on last match."; var participant = match.Participants.Where(p => p.ParticipantId == match.ParticipantIdentities.Where(i => i.Player.SummonerName == summoner.Name).FirstOrDefault().ParticipantId).FirstOrDefault(); var tier = participant.HighestAchievedSeasonTier; if (tier == null || tier == "UNRANKED") { elo = StaticValues.DefaultElo; info += " (Unranked)"; } else { elo = RankToPoints($"{tier} 2"); info += $" ({tier})"; } } } } else { elo = RankToPoints($"{leagueEntry.Tier} {RomanToArabic(leagueEntry.Rank)}") + leagueEntry.LeaguePoints; info = $"{leagueEntry.Tier} {leagueEntry.Rank}"; } var timeout = 3000 - (DateTime.Now - start).TotalMilliseconds; if (timeout > 0) { Thread.Sleep((int)timeout); } summonerData.Name = summoner.Name; summonerData.Info = info; summonerData.Elo = elo; return(summonerData); }