public async Task <Player> GetPlayer(long id, bool onlineOnly = false) { if (ContainsKey(id)) { TryGetValue(id, out var value); return(value); } if (onlineOnly) { return(null); } if (!Redis.IsConnected) { return(await PlayerDb.Get(id)); } var player = await Redis.GetCachedPlayer(id); if (player != null) { return(player); } player = await PlayerDb.Get(id); await Redis.CachePlayer(player); return(player); }
public override async Task Process() { var player = await PlayerDb.Get(FacebookId); if (player == null) { Device.Player.FacebookId = FacebookId; await Resources.Gateway.Send(new FacebookAccountBoundMessage(Device)); } else { if (Device.Player.AccountId != player.AccountId) { await Resources.Gateway.Send(new FacebookAccountAlreadyBoundMessage(Device) { Player = player }); } else { Device.Player.FacebookId = FacebookId; await Resources.Gateway.Send(new FacebookAccountBoundMessage(Device)); } } }