public IHttpActionResult Join(GameParamModel gameModel)
        {
            var currentUserId = this.userInfoProvider.GetUserId();

            var game = this.Data.Games
                           .All()
                           .Where(g => g.GameId.ToString() == gameModel.GameId &&
                                       g.State == GameState.WaitingForSecondPlayer &&
                                       g.FirstPlayerId != currentUserId)
                           .FirstOrDefault();

            if (game == null)
            {
                return this.NotFound();
            }

            game.SecondPlayerId = currentUserId;
            game.State = GameState.TurnX;
            this.Data.SaveChanges();

            return this.Ok();
        }
        public IHttpActionResult Status(GameParamModel gameModel)
        {
            var currentUserId = this.userInfoProvider.GetUserId();
            var idAsGuid = new Guid(gameModel.GameId);

            var game = this.Data.Games.All()
                           .Where(x => x.GameId == idAsGuid)
                           .Select(x => new { x.FirstPlayerId, x.SecondPlayerId })
                           .FirstOrDefault();

            if (game == null)
            {
                return this.NotFound();
            }

            if (game.FirstPlayerId != currentUserId && game.SecondPlayerId != currentUserId)
            {
                return this.BadRequest("This is not your game!");
            }

            var gameInfo = this.Data.Games.All()
                               .Where(g => g.GameId == idAsGuid)
                               .Select(g => new GameInfoDataModel()
                                      {
                                          Board = g.Board,
                                          Id = g.GameId,
                                          State = g.State,
                                          FirstPlayerName = g.FirstPlayer.UserName,
                                          SecondPlayerName = g.SecondPlayer.UserName,
                                      })
                               .FirstOrDefault();

            return this.Ok(gameInfo);
        }