public static Game ToGame(this GameManagementModel m)
 {
     return(m == null
         ? null
         : new Game
     {
         Name = m.Name,
         Note = m.Note,
         GameLevel = m.GameLevel,
         Size = m.ArenaSize ?? 800,
         PlayerSize = (byte)(m.PlayerSize ?? 800),
         GameUid = Guid.NewGuid().ToString()
     });
 }
        public async Task <GameManagementViewModel> AddGame([FromBody] GameManagementModel model)
        {
            var user = User.Identity.Name;

            var entity = await _service.CreateGameAsync(model, user);

            GameManagementViewModel viewModel = entity.ToViewModel();

            games.Add(viewModel);

            await _hubContext.Clients.All.GameAdded(viewModel);

            return(viewModel);
        }
        public async Task <Game> CreateGameAsync(GameManagementModel model, string user)
        {
            var entity = model.ToGame();

            if (entity == null)
            {
                throw new ArgumentNullException();
            }

            entity.GamePlayer.Add(new GamePlayer
            {
                Name = user,
            });

            _context.Game.Add(entity);
            await _context.SaveChangesAsync();

            return(entity);
        }
        public async Task <IActionResult> JoinGame(Guid gameUid, [FromBody] GameManagementModel model)
        {
            try
            {
                var game = await _service.JoinAsync(gameUid, User.Identity.Name);

                GameManagementViewModel viewModel = game.ToViewModel();

                await _hubContext.Clients.All.GameJoined(viewModel);

                return(Ok(viewModel));
            }
            catch (ArgumentNullException ex)
            {
                return(NotFound(ex.Message));
            }
            catch (GameFullException ex)
            {
                return(BadRequest(ex.Message));
            }
        }