Esempio n. 1
0
        public async Task <CurrentGame> GetCurrentGame(Summoner summoner, Action <CurrentGame> action = null)
        {
            try
            {
                var playingGame = await MongoDbCurrentGame.FindOneAsync(Builders <CurrentGame> .Filter.Eq(x => x.GameId, summoner.TrackingGameId.GetValueOrDefault()));

                if (playingGame != null)
                {
                    return(playingGame);
                }

                var currentGame = await RiotApi.SpectatorV4.GetCurrentGameInfoBySummonerAsync(Region.Get(summoner.Region), summoner.SummonerId);

                if (currentGame == null)
                {
                    return(null);
                }

                return(await MongoDbCurrentGame.UpsertAsync(Builders <CurrentGame> .Filter.Eq(x => x.GameId, currentGame.GameId),
                                                            currentGame.ConvertTo <CurrentGame, MingweiSamuel.Camille.SpectatorV4.CurrentGameInfo>(),
                                                            async (game) =>
                {
                    game.GameState = Code.GameState.Playing;
                    summoner.TrackingGameId = game.GameId;
                    await MongoDbSummoner.UpdateAsync(summoner.Id, summoner);
                    action?.Invoke(game);
                }));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex.Message);
                return(null);
            }
        }
Esempio n. 2
0
 public async Task <Summoner> GetSummerByName(string summonerName, Region region)
 {
     try
     {
         return(await MongoDbSummoner.FindOneAsync(SummonerFilter(summonerName, region)));
     }
     catch (Exception ex)
     {
         Log.Logger.Error(ex.Message);
         return(null);
     }
 }
Esempio n. 3
0
        public CurrentGame EndGame(Summoner summoner, CurrentGame currentGame)
        {
            try
            {
                summoner.TrackingGameId = null;
                MongoDbSummoner.Update(summoner.Id, summoner);

                currentGame.GameState = Code.GameState.End;
                return(MongoDbCurrentGame.Update(currentGame.Id, currentGame));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex.Message);
                return(null);
            }
        }
Esempio n. 4
0
        public async Task <Summoner> CreateSummerByName(string summonerName, Region region, bool tracking)
        {
            try
            {
                var origin = await GetSummerByName(summonerName, region);

                if (origin != null)
                {
                    return(origin);
                }

                var summoner = await RiotApi.SummonerV4.GetBySummonerNameAsync(region, summonerName);

                if (summoner == null)
                {
                    return(null);
                }

                await RefreshLeagueEntries(summoner.Id, region);

                return(await MongoDbSummoner.UpsertAsync(SummonerFilter(summonerName, region),
                                                         new Summoner
                {
                    Name = summoner.Name,
                    NameLower = summoner.Name.ToLower(),
                    Level = summoner.SummonerLevel,
                    AccountId = summoner.AccountId,
                    Puuid = summoner.Puuid,
                    Region = region.Key,
                    SummonerId = summoner.Id,
                    Tracking = tracking
                }));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex.Message);
                return(null);
            }
        }
Esempio n. 5
0
        public async Task <Summoner> UpdateSummerByName(string summonerName, Region region, bool tracking)
        {
            try
            {
                var origin = await GetSummerByName(summonerName, region);

                if (origin == null)
                {
                    return(null);
                }

                origin.Tracking = tracking;
                await MongoDbSummoner.UpdateAsync(SummonerFilter(summonerName, region), origin);

                return(origin);
            }
            catch (Exception ex)
            {
                Log.Logger.Error(ex.Message);
                return(null);
            }
        }
Esempio n. 6
0
 public async Task <List <Summoner> > GetTrackingSummoners()
 {
     return(await MongoDbSummoner.FindAsync(Builders <Summoner> .Filter.Eq(x => x.Tracking, true)));
 }