Beispiel #1
0
        public async Task <GenericResponse <LolStatsResponse> > GetStatsFromSite(string gameUsername)
        {
            var requestId = _requestFactory.GenerateRequest($"lol/summoner/v3/summoners/by-name/{gameUsername}", Method.GET, "lol");
            var lolId     = _restClient.Execute <LolResponse>(requestId);

            if (lolId.StatusCode.IsStatusOk())
            {
                var id      = new GenericResponse <LolResponse>(lolId.Data).Result.Id;
                var request = _requestFactory.GenerateRequest($"lol/league/v3/positions/by-summoner/{id}", Method.GET, "lol");
                var lolUser = _restClient.Execute <List <LolListStatsResponse> >(request);

                if (lolUser.StatusCode.IsStatusOk())
                {
                    if (lolUser.Data.Count() == 2)
                    {
                        var lolStats = new LolStatsResponse
                        {
                            SoloQ = lolUser.Data[1],
                            FlexQ = lolUser.Data[0]
                        };
                        return(new GenericResponse <LolStatsResponse>(lolStats));
                    }
                    else if (lolUser.Data.Count() < 2)
                    {
                        return(new GenericResponse <LolStatsResponse>(LolTools.NoRankResponse()));
                    }
                    else
                    {
                        var lolStats = new LolStatsResponse
                        {
                            SoloQ = lolUser.Data[1],
                            FlexQ = lolUser.Data[2]
                        };
                        return(new GenericResponse <LolStatsResponse>(lolStats));
                    }
                }
                else
                {
                    return(new GenericResponse <LolStatsResponse>($"Cannot get stats for {gameUsername} (error {lolUser.StatusCode})", null));
                }
            }
            else
            {
                return(new GenericResponse <LolStatsResponse>($"Cannot get stats for {gameUsername} (error {lolId.StatusCode})", null));
            }
        }
Beispiel #2
0
        public async Task <GenericResponse <IEnumerable <TLolStat> > > GetLeaderboard(string sortBy)
        {
            try
            {
                // Get sorting functions
                var sortingFunctions = LolTools.GetSortingFunctions(sortBy);
                if (sortingFunctions.Item1 == null && sortingFunctions.Item2 == null)
                {
                    return(new GenericResponse <IEnumerable <TLolStat> >($"Sort mode {sortBy} is not valid", null));
                }

                var leaderboardUsers = _databaseContext.TLolStat
                                       .Include(s => s.UserGame)
                                       .ThenInclude(ug => ug.User)
                                       .OrderByDescending(sortingFunctions.Item1)
                                       .ThenByDescending(sortingFunctions.Item2)
                                       .Take(50);
                return(new GenericResponse <IEnumerable <TLolStat> >(leaderboardUsers));
            }
            catch (Exception e)
            {
                return(new GenericResponse <IEnumerable <TLolStat> >("Cannot get leaderboard", e));
            }
        }