예제 #1
0
        public static LolStatsResponse ConvertToResponse(this TLolStat lolDbStats)
        {
            if (lolDbStats == null)
            {
                return(null);
            }
            LolStatsResponse lolResponse = new LolStatsResponse
            {
                SoloQ = new LolListStatsResponse
                {
                    LeagueName   = lolDbStats.SoloNameLeague,
                    Wins         = lolDbStats.SoloWins,
                    Losses       = lolDbStats.SoloLosses,
                    LeaguePoints = lolDbStats.SoloLp,
                    Tier         = lolDbStats.SoloTier,
                    Rank         = lolDbStats.SoloRank
                },
                FlexQ = new LolListStatsResponse
                {
                    LeagueName   = lolDbStats.FlexNameLeague,
                    Wins         = lolDbStats.FlexWins,
                    Losses       = lolDbStats.FlexLosses,
                    LeaguePoints = lolDbStats.FlexLp,
                    Tier         = lolDbStats.FlexTier,
                    Rank         = lolDbStats.FlexRank
                }
            };

            return(lolResponse);
        }
예제 #2
0
        public async Task <GenericResponse <LolStatsResponse> > GetStatsFromCache(string gameUsername)
        {
            TLolStat dbStats = _databaseContext.TLolStat.FirstOrDefault(s => s.UserGame.Username == gameUsername);

            if (dbStats == null)
            {
                return(new GenericResponse <LolStatsResponse>($"Cannot get stats for {gameUsername}", null));
            }

            return(new GenericResponse <LolStatsResponse>(dbStats.ConvertToResponse()));
        }
예제 #3
0
        public async Task <GenericResponse <BooleanResponse> > UpdateCache(LolStatsResponse lolResponse, TUserGame userGame)
        {
            TLolStat dbStats = _databaseContext.TLolStat.FirstOrDefault(s => s.UserGame.Username == userGame.Username);

            bool newStats = false;

            if (dbStats == null)
            {
                newStats = true;
                dbStats  = new TLolStat {
                    UserGameId = userGame.Id
                };
            }


            dbStats.FlexTier       = lolResponse.FlexQ.Tier;
            dbStats.FlexLosses     = lolResponse.FlexQ.Losses;
            dbStats.FlexLp         = lolResponse.FlexQ.LeaguePoints;
            dbStats.FlexNameLeague = lolResponse.FlexQ.LeagueName;
            dbStats.FlexWins       = lolResponse.FlexQ.Wins;
            dbStats.FlexRank       = lolResponse.FlexQ.Rank;

            dbStats.SoloTier       = lolResponse.SoloQ.Tier;
            dbStats.SoloLosses     = lolResponse.SoloQ.Losses;
            dbStats.SoloLp         = lolResponse.SoloQ.LeaguePoints;
            dbStats.SoloNameLeague = lolResponse.SoloQ.LeagueName;
            dbStats.SoloWins       = lolResponse.SoloQ.Wins;
            dbStats.SoloRank       = lolResponse.SoloQ.Rank;

            try
            {
                if (newStats)
                {
                    _databaseContext.TLolStat.Add(dbStats);
                }
                else
                {
                    _databaseContext.TLolStat.Update(dbStats);
                }
                await _databaseContext.SaveChangesAsync();

                return(new GenericResponse <BooleanResponse>(new BooleanResponse {
                    Success = true
                }));
            }
            catch (DbUpdateException e)
            {
                return(new GenericResponse <BooleanResponse>("Error while saving in cache", e));
            }
        }
예제 #4
0
        public async Task <GenericResponse <BooleanResponse> > DeleteCache(long userId)
        {
            try
            {
                // Get
                TLolStat cache = _databaseContext.TLolStat.Where(s => s.UserGame.UserId == userId).FirstOrDefault();

                // Delete if found
                if (cache != null)
                {
                    _databaseContext.TLolStat.Remove(cache);
                    await _databaseContext.SaveChangesAsync();
                }
                return(new GenericResponse <BooleanResponse>(new BooleanResponse {
                    Success = true
                }));
            }
            catch (DbUpdateException e)
            {
                return(new GenericResponse <BooleanResponse>("Error while deleting game cache", e));
            }
        }