public ActionResult CreateGame()
        {
            GameCreateModel model = new GameCreateModel();

            model.teams = db.Teams.ToList();
            return(View(model));
        }
Example #2
0
        public ActionResult Create(GameCreateModel gameModel, string tournamentSlug)
        {
            if (gameModel.HomeTeamId == gameModel.AwayTeamId)
            {
                ModelState.AddModelError("AwayTeamId", "A team cannot play itself");
            }
            if (ModelState.IsValid)
            {
                var game = new Game
                {
                    RoundId  = gameModel.RoundId.Value,
                    GameTime = gameModel.GameTime
                };
                db.Games.Add(game);
                db.SaveChanges();

                var model = new GameEditModel
                {
                    Id         = game.Id,
                    HomeTeamId = gameModel.HomeTeamId,
                    AwayTeamId = gameModel.AwayTeamId,
                    GameTime   = gameModel.GameTime,
                    FieldId    = gameModel.FieldId
                };
                return(Edit(model, tournamentSlug));
            }

            var teams = db.Teams.Where(t => t.Tournament.Slug == tournamentSlug);

            ViewBag.HomeTeamId = new SelectList(teams, "Id", "Name");
            ViewBag.AwayTeamId = new SelectList(teams, "Id", "Name");

            ViewBag.RoundId = new SelectList(db.Rounds, "Id", "Name", gameModel.RoundId);
            return(View(gameModel));
        }
Example #3
0
 private void PrepareGameForCreate(GameCreateModel game)
 {
     //TODO: Fix properly in code and not database defaults
     game.Columns    = 3;
     game.Rows       = 3;
     game.MaxPlayers = 2;
 }
        public async Task <ActionResult> Post(GameCreateModel input)
        {
            var newGame = await GameService.CreateNewGame(input, _userManager);

            await DocumentDBRepository <Game> .CreateItemAsync(newGame);

            return(CreatedAtAction("Post", newGame));
        }
Example #5
0
        public async Task <IHttpActionResult> Create(GameCreateModel model)
        {
            IPrincipal principal = RequestContext.Principal;
            await validationService.ValidateForCreate(principal, model);

            int gameId = await gameService.CreateAsync(model, principal);

            return(Ok(gameId));
        }
 public ActionResult EditGame([Bind(Include = "game,team1ID,team2ID")] GameCreateModel gcm)
 {
     if (ModelState.IsValid)
     {
         db.Entry(gcm.game).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View("EditGame", gcm));
 }
Example #7
0
        public async Task <int> CreateAsync(GameCreateModel model, IPrincipal currentPrincipal)
        {
            IdentityUser user = await context.Users.SingleAsync(x => x.UserName == currentPrincipal.Identity.Name);

            Game game = ModelToGame(model.FirstPlayerId, user.Id);

            context.Games.Add(game);
            await context.SaveChangesAsync();

            return(game.Id);
        }
Example #8
0
        public async Task ValidateNewGameAsync_ZeroColumnsAsync()
        {
            var model = new GameCreateModel
            {
                Columns = 0,
                Rows    = 3,
                Type    = GameType.Standard,
            };

            await _gameValidator.ValidateNewGameAsync(model);
        }
Example #9
0
        public async Task ValidateNewGameAsync_NegativeColumnsAsync()
        {
            var model = new GameCreateModel
            {
                Columns = -1,
                Rows    = 3,
                Type    = GameType.Standard,
            };

            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => _gameValidator.ValidateNewGameAsync(model));
        }
Example #10
0
        public async Task ValidateForCreate(IPrincipal currentPrincipal, GameCreateModel model)
        {
            await ValidateCurrentUser(currentPrincipal, model.SecondPlayerId);

            if (!(await ValidateExistingUserId(model.SecondPlayerId)))
            {
                AddError("There is no such user.");
            }

            HandleErrors();
        }
Example #11
0
        public ActionResult Create(GameCreateModel parameters)
        {
            var _teamLogic = new TeamLogic();

            ViewBag.Teams = _teamLogic.GetAll(new BL.Models.Core.Filter()).Output;
            var opResult = _gameLogic.Add(parameters);

            if (opResult.IsSuccess)
            {
                return(RedirectToAction("index"));
            }
            return(View(parameters));
        }
Example #12
0
        public static async Task <Game> CreateNewGame(GameCreateModel createGameModel, UserManager <ApplicationUser> userManager)
        {
            var players = new List <Player>();

            players.Add(await GetPlayerFromEmail(createGameModel.Player1, userManager));
            players.Add(await GetPlayerFromEmail(createGameModel.Player2, userManager));
            players.Add(await GetPlayerFromEmail(createGameModel.Player3, userManager));
            var newGame = new Game(players);

            newGame.Deals.Add(new Deal());
            //var initialDeal = CreateDeal();
            //newGame.Deals.Add(initialDeal);
            newGame.Description = createGameModel.Description;
            return(newGame);
        }
Example #13
0
        public async Task <IActionResult> CreateGame([FromBody] GameCreateModel game)
        {
            CreateGameDto createdGame = new CreateGameDto()
            {
                Name        = game.Name,
                Description = game.Description,
                PublisherId = game.PublisherId,
                Genres      = game.Genres,
                Platforms   = game.Platforms,
            };

            await gameService.AddGame(createdGame);

            return(StatusCode((int)HttpStatusCode.Created, "Game was added"));
        }
        public ActionResult CreateGame([Bind(Include = "game,team1ID,team2ID")] GameCreateModel gamecreate)
        {
            DateTime dat   = DateTime.Now;
            Game     game1 = gamecreate.game;

            game1.StartTime  = dat;
            game1.EndTime    = dat.AddMinutes(105);
            game1.team1Score = 0;
            game1.team2Score = 0;
            game1.Team1ID    = gamecreate.team1ID;
            game1.Team2ID    = gamecreate.team2ID;
            db.Games.Add(game1);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult Create(GameCreateModel game)
        {
            if (ModelState.IsValid)
            {
                var newGame = new Game();
                newGame.Name           = game.Name;
                newGame.GameState      = GameState.Created;
                newGame.First_PlayerId = this.User.Identity.GetUserId();
                this.Data.Games.Add(newGame);
                this.Data.SaveChanges();
                return(RedirectToAction("PickTeam", "GameInfo", new { id = newGame.Id }));
            }

            return(View(game));
        }
        public async Task PostAsync_Unauthorized()
        {
            await RunAsync(async factory =>
            {
                var game = new GameCreateModel
                {
                    DeckId = 401,
                    Type   = GameType.Standard,
                };
                var client = factory.CreateClient();

                var response = await client.PostJsonAsync("api/games", game);

                Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
            });
        }
Example #17
0
        public async Task <IActionResult> EditGame(int id, [FromBody] GameCreateModel game)
        {
            EditGameDto dto = new EditGameDto()
            {
                Id          = id,
                Description = game.Description,
                Genres      = game.Genres,
                Name        = game.Name,
                Platforms   = game.Platforms,
                PublisherId = game.PublisherId
            };

            await gameService.EditGame(dto);

            return(StatusCode((int)HttpStatusCode.NoContent));
        }
        public async Task PostAsync_DeckNotEnoughCards_ReturnsBadRequest()
        {
            await RunAsync(async factory =>
            {
                await factory.AddDataAsync(
                    new CardModel
                {
                    Id = IdCard + 1,
                }
                    );

                await factory.AddDataAsync(
                    new DeckData
                {
                    Id       = 401,
                    MaxCards = 5,
                    UserId   = 1,
                    Cards    = new DeckCardData[]
                    {
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 1,
                            CardId           = IdCard + 1,
                        },
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 2,
                            CardId           = IdCard + 1,
                        },
                    }
                }
                    );

                var game = new GameCreateModel
                {
                    DeckId = 401,
                    Type   = GameType.Standard,
                };
                var client = factory.CreateClientWithAuth();

                var response = await client.PostJsonAsync("api/games", game);
                var model    = await response.Content.ReadAsAsync <ErrorViewModel>();

                Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
                Assert.Equal($"Deck 401 needs 5 cards. Currently only has 2.", model.Message);
            });
        }
Example #19
0
        public async Task <ActionResult <GameModel> > PostAsync(GameCreateModel model, CancellationToken cancellationToken)
        {
            var userId = (await GetUserAsync(cancellationToken: cancellationToken)).Id;

            var game = new GameCreateModel
            {
                DeckId = model.DeckId,
                Type   = model.Type,
                Users  = new UserModel[] { new UserModel {
                                               Id = userId
                                           } },
            };

            var newGame = await _gameService.CreateGameAsync(game, cancellationToken : cancellationToken);

            return(CreatedAtAction(nameof(GetByIdAsync), new { id = newGame.Id }, newGame));
        }
Example #20
0
        async Task <GameModel> IGameService.CreateGameAsync(GameCreateModel game, CancellationToken cancellationToken)
        {
            await _gameValidator.ValidateNewGameAsync(game, cancellationToken : cancellationToken);

            var newGameCreate = _gameCreateMapper.Map(game);

            var newGame = await _gameRepository.AddGameAsync(newGameCreate, cancellationToken : cancellationToken);

            if (game.Users != null)
            {
                foreach (var user in game.Users)
                {
                    await AddUserToGameInternalAsync(newGame.Id, user.Id, game.DeckId, cancellationToken : cancellationToken);
                }
            }

            return(_gameMapper.Map(newGame));
        }
Example #21
0
        public ActionResult Create(string tournamentSlug, int id)
        {
            ViewBag.RoundId = new SelectList(db.Rounds, "Id", "Name", id);
            var teams = db.Teams.Where(t => t.Tournament.Slug == tournamentSlug);

            ViewBag.HomeTeamId = new SelectList(teams, "Id", "Name");
            ViewBag.AwayTeamId = new SelectList(teams, "Id", "Name");

            var fields = db.Fields.ToList();

            ViewBag.FieldId = new SelectList(fields, "Id", "Name");

            var model = new GameCreateModel
            {
                RoundId = id
            };

            return(View(model));
        }
Example #22
0
        public IHttpActionResult CreateGame(GameCreateModel game)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest("Please input game name and secret number!"));
            }

            if (!this.ValidNumber(game.Number))
            {
                return(this.BadRequest("The number isn't valid"));
            }

            var newGame = new Game
            {
                Name        = game.Name,
                Red         = this.User.Identity.Name,
                RedNumber   = game.Number,
                Blue        = "No blue player yet",
                BlueNumber  = "0",
                Guesses     = new HashSet <Guess>(),
                GameState   = GameState.WaitingForOpponent,
                DateCreated = DateTime.Now,
            };

            this.data.Games.Add(newGame);
            this.data.SaveChanges();

            var responceModel = new GameModel
            {
                Id          = newGame.Id,
                Name        = newGame.Name,
                Blue        = newGame.Blue,
                Red         = newGame.Red,
                GameState   = newGame.GameState.ToString(),
                DateCreated = newGame.DateCreated.ToString()
            };

            var location = new Uri(this.Url.Link("DefaultApi", new { id = newGame.Id }));
            var response = this.Created(location, responceModel);

            return(response);
        }
        public ActionResult EditGame(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Game game = db.Games.Find(id);

            if (game == null)
            {
                return(HttpNotFound());
            }
            GameCreateModel gcm = new GameCreateModel();

            gcm.team1ID = game.Team1ID;
            gcm.team2ID = game.Team2ID;
            gcm.game    = game;
            gcm.teams   = db.Teams.ToList();
            return(View("EditGame", gcm));
        }
Example #24
0
        public IHttpActionResult Post(GameCreateModel game)
        {
            if (game == null || !ModelState.IsValid)
            {
                return(this.BadRequest("Invalid game format!"));
            }

            Game gameResult = this.games.Create(
                this.User.Identity.GetUserId(),
                game.Name,
                game.Number);

            var responseResult = new GameCreateResponseModel
            {
                Blue        = "No blue player yet",
                DateCreated = gameResult.DateCreated,
                GameState   = gameResult.GameState.ToString(),
                Id          = gameResult.GameId,
                Name        = gameResult.Name,
                Red         = gameResult.RedUser.UserName
            };

            return(this.Ok());
        }
Example #25
0
        Task IGameValidator.ValidateNewGameAsync(GameCreateModel game, CancellationToken cancellationToken)
        {
            if (game == null)
            {
                throw new ArgumentNullException(nameof(game));
            }

            if (game.Rows < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(game), nameof(game.Rows) + " must be >= 0.");
            }

            if (game.Columns < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(game), nameof(game.Columns) + " must be >= 0.");
            }

            if (!Enum.IsDefined(typeof(GameType), game.Type))
            {
                throw new ArgumentException(nameof(GameType) + " not valid.", nameof(game));
            }

            return(Task.CompletedTask);
        }
        public IHttpActionResult Post(GameCreateModel game)
        {
            if (game == null || !ModelState.IsValid)
            {
                return this.BadRequest("Invalid game format!");
            }

            Game gameResult = this.games.Create(
                this.User.Identity.GetUserId(),
                game.Name,
                game.Number);

            var responseResult = new GameCreateResponseModel
            {
                Blue = "No blue player yet",
                DateCreated = gameResult.DateCreated,
                GameState = gameResult.GameState.ToString(),
                Id = gameResult.GameId,
                Name = gameResult.Name,
                Red = gameResult.RedUser.UserName
            };

            return this.Ok();
        }
Example #27
0
        public ActionResult Create(GameCreateModel game, IEnumerable <HttpPostedFileBase> uploads)
        {
            List <Picture> pictures = new List <Picture>();

            foreach (var file in uploads)
            {
                if (file != null)
                {
                    byte[] imageData = null;
                    // считываем переданный файл в массив байтов
                    using (var binaryReader = new BinaryReader(file.InputStream))
                    {
                        imageData = binaryReader.ReadBytes(file.ContentLength);
                    }
                    pictures.Add(new Picture {
                        Image = imageData, Name = file.FileName
                    });
                }
            }
            // установка массива байтов

            Game gameNew = new Game()
            {
                Name        = game.Name,
                Description = game.Description,
                Price       = game.Price,
                Language    = game.Language,
                Discount    = game.Discount,
                Pictures    = pictures,
                ReleaseDate = game.ReleaseDate
            };

            if (store.Developer.Find(d => d.Name == game.Developer).FirstOrDefault() == null)
            {
                gameNew.Developer = new Developer {
                    Name = game.Developer
                }
            }
            ;
            else
            {
                gameNew.Developer = store.Developer.Find(d => d.Name == game.Developer).FirstOrDefault();
            }
            ///
            if (store.Genres.Find(g => game.Genres.Contains(g.Name)).FirstOrDefault() == null)
            {
                ModelState.AddModelError("Genres", "Ошибка");
                return(View(game));
            }
            else
            {
                gameNew.Genres = store.Genres.Find(g => game.Genres.Contains(g.Name)).ToList();
            }
            ///
            if (store.Features.Find(f => game.Features.Contains(f.Name)).FirstOrDefault() == null)
            {
                ModelState.AddModelError("Features", "Ошибка");
                return(View(game));
            }
            else
            {
                gameNew.Features = store.Features.Find(f => game.Features.Contains(f.Name)).ToList();
            }
            ///

            store.Games.Create(gameNew);
            return(View());
        }
        public async Task PostAsync_ValidDeck_ReturnsSuccess()
        {
            await RunAsync(async factory =>
            {
                await factory.AddDataAsync(
                    new CardModel
                {
                    Id = IdCard + 1,
                }
                    );

                await factory.AddDataAsync(
                    new DeckData
                {
                    Id       = 401,
                    MaxCards = 5,
                    UserId   = 1,
                    Cards    = new DeckCardData[]
                    {
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 1,
                            CardId           = IdCard + 1,
                        },
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 2,
                            CardId           = IdCard + 1,
                        },
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 3,
                            CardId           = IdCard + 1,
                        },
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 4,
                            CardId           = IdCard + 1,
                        },
                        new DeckCardData
                        {
                            CardCollectionId = IdCardCollection + 5,
                            CardId           = IdCard + 1,
                        },
                    }
                }
                    );

                var game = new GameCreateModel
                {
                    DeckId = 401,
                    Type   = GameType.Standard,
                };
                var client = factory.CreateClientWithAuth();

                var response = await client.PostJsonAsync("api/games", game);
                response.EnsureSuccessStatusCode();

                var model = await response.Content.ReadAsAsync <GameModel>();

                Assert.NotNull(model);
                Assert.True(model.Id > 0);
                Assert.Null(model.WinnerUserId);
            });
        }