public async Task <GameDto> StartGame(StartGameDto model)
        {
            Game g = GameStore.GetGame(model.Id);

            for (int i = 0; i < g.Players.Count; i++)
            {
                g.Players[i].Order = i;
            }
            g.CurrentRound  = new Round(1, g.Players.Count);
            g.CurrentPlayer = g.Players[0];
            g.Status        = GameStatus.Playing;
            await AssertRoles(model.Id, model.Roles);

            GameStore.AddOrUpdateGame(g);
            await _gameHub.Clients.Group(g.Id.ToString()).SendAsync("UpdateAll");

            return(ObjectMapper.Map <GameDto>(g));
        }
        public async Task StartGameAsync(StartGameDto startGameDto)
        {
            var game = await gameRepository.GetAsync(startGameDto.GameId);
            if (startGameDto.UserId != game.CreatorId)
            {
                await Clients.Caller.SendAsync("Error", new ErrorMessage { Id = "start-game-error", Message = "Only creator can start the game" });
                return;
            }
            
            game.StartTime = DateTime.UtcNow;
            game.Status = GameStatus.Active;
            game.DrawerPlayerId = game.PlayersIds.GetRandomItem();

            await gameRepository.MergeAsync(game);

            var result = new GameStartedDto {GameId = game.Id, StartTime = DateTime.UtcNow};
            var groupName = game.Id.ToString();
            await Clients.Group(groupName).SendAsync("StartGame", result);
        }