Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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
            });

            ;
        }
Beispiel #3
0
        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);
        }