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); }