public IActionResult OnPostAsync(Guid gameId, int cardsPerRow, int cardCount, IFormFile cardSheet, IFormFile infoSheet) { var cards = new Card[] { }; if (infoSheet != null) { using (var reader = new System.IO.StreamReader(infoSheet.OpenReadStream())) { cards = CardList.FromString(reader.ReadToEnd()).ToArray(); } } using (var imageSlicer = new ImageSlicer(cardsPerRow, cardCount, cardSheet.OpenReadStream())) { _game = _gameStore.Get().SingleOrDefault(g => g.Id == gameId); if (_game.CardSize == null) { _game.CardSize = imageSlicer.CardSize; _gameStore.UpdateOne(_game.Id, g => g.CardSize = imageSlicer.CardSize); } else if (_game.CardSize != imageSlicer.CardSize) { // Problem, card sizes are different return(RedirectToAction("UploadCards")); } var index = 0; foreach (var imageData in imageSlicer.Slices) { var card = cards.Length > index ? cards[index] : new Card(); card.Id = Guid.NewGuid(); card.GameId = gameId; card.CreatedOn = DateTime.Now; _cardStore.Add(card); _imageStore.Add(new ImageData { Id = card.Id, Data = imageData, OriginalFileName = String.Empty }); index++; } UpdateGameData(gameId); return(RedirectToPage("/Cards", new { gameId })); } }
public IActionResult Upload(Guid gameId, int cardsPerRow, int cardCount, IFormFile cardSheet) { foreach (var imageData in ImageSlicer.Slice(cardsPerRow, cardCount, cardSheet.OpenReadStream())) { var card = new Card { Id = Guid.NewGuid(), Name = String.Empty, GameId = gameId, CreatedOn = DateTime.Now }; _cardStore.Add(card); _imageStore.Store(card.Id, imageData); } _gameStore.UpdateOne(gameId, g => g.CardCount += cardCount); return(RedirectToAction("Cards", "Games", new { gameId })); }