public IHttpActionResult CreateGame(CreateGameModel gameModel) { if(!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } if (gameModel.Number.ToString().Length != 4) { return this.BadRequest("Please enter number with 4 digits"); } if (ContainsDuplicates(gameModel.Number)) { return this.BadRequest("Your number should consist of 4 different digits"); } var userId = this.User.Identity.GetUserId(); var game = new Game { Name = gameModel.Name, RedPlayerId = userId, RedPlayerNumber = gameModel.Number, GameState = GameState.WaitingForOpponent, DateCreated = DateTime.Now, isFinished = false }; var addedGame = this.ApplicationData.Games.Add(game); this.ApplicationData.SaveChanges(); var gameModelToSend = new GameModel(); gameModelToSend.Name = addedGame.Name; gameModelToSend.Id = addedGame.Id; gameModelToSend.Blue = "No blue player yet"; gameModelToSend.Red = this.User.Identity.Name; gameModelToSend.GameState = GameState.WaitingForOpponent.ToString(); ; gameModelToSend.DateCreated = addedGame.DateCreated; return Created("api/games", gameModelToSend); }
public IHttpActionResult JoinGame(int id, CreateGameModel model) { if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } if (model.Number.ToString().Length != 4) { return this.BadRequest("Please enter number with 4 digits"); } if (ContainsDuplicates(model.Number)) { return this.BadRequest("Your number should consist of 4 different digits"); } var gameToJoin = this.ApplicationData.Games.Find(id); if (gameToJoin == null) { return this.NotFound(); } var currentPlayerId = this.User.Identity.GetUserId(); if(gameToJoin.RedPlayerId == currentPlayerId) { return this.BadRequest("A game, created by a user, cannot be joined by the same user"); } if(gameToJoin.BluePlayerId == currentPlayerId) { return this.BadRequest("You are already playing in this game"); } gameToJoin.BluePlayerId = currentPlayerId; gameToJoin.BluePlayerNumber = model.Number; var generatedRandomNumber = random.Next(0, 2); if (generatedRandomNumber == 0) { gameToJoin.GameState = GameState.RedInTurn; } else { gameToJoin.GameState = GameState.BlueInTurn; } this.ApplicationData.SaveChanges(); return Ok(new { result = string.Format(@"You joined game ""{0}""", gameToJoin.Name) }); }