public async Task <Game> CreateGameAsync(string keyword = "") { var newGame = await _context.Games.AddAsync(new Game() { Keyword = keyword }); await _context.DrawSource.AddRangeAsync(BingoGenerator.GenerateDrawSource(newGame.Entity.Id)); await _context.SaveChangesAsync(); return(newGame.Entity); }
public async Task <int> AddCardAsync(Game game, string keyword) { if (game == null) { throw new ArgumentNullException(nameof(game)); } if (!string.IsNullOrEmpty(game.Keyword) && game.Keyword != keyword) { throw new InvalidKeywordException(); } var card = await _context.Cards.AddAsync(new Card() { GameId = game.Id }); var opendNumbers = game.DrawSource.Take(game.DrawCount).Select(d => d.Number); await _context.CardCells.AddRangeAsync(BingoGenerator.GenerateCardCells(card.Entity.Id, opendNumbers)); await _context.SaveChangesAsync(); return(card.Entity.Id); }