Пример #1
0
        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 }));
            }
        }
Пример #2
0
        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 }));
        }