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); } }
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); } }
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); } }
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); } }
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); } }
public async Task <List <Summoner> > GetTrackingSummoners() { return(await MongoDbSummoner.FindAsync(Builders <Summoner> .Filter.Eq(x => x.Tracking, true))); }