public async Task <GameKeyViewModel> PostGameKeyAsync(string vendorUserName, GameKeyDto gameKeyDto)
        {
            var gameKey = MapToEntity(vendorUserName, gameKeyDto);

            _context.GameKeys.Add(gameKey);
            await _context.SaveChangesAsync();

            return(_mapper.Map <GameKeyViewModel>(gameKey));
        }
        private GameKey MapToEntity(string vendorUserName, GameKeyDto dto)
        {
            var game = _context.Games.Include(game => game.Vendor).Single(game => game.ID == dto.GameID);

            if (game == null)
            {
                throw new ItemNotFoundException();
            }
            if (game.Vendor.Username != vendorUserName)
            {
                throw new WrongVendorException();
            }
            return(new GameKey
            {
                Key = dto.Key,
                Game = game,
            });
        }
        public async Task <ActionResult <GameKeyViewModel> > PostGameKey([FromHeader(Name = "Authorization")] string JWT, GameKeyDto gameKeyDto)
        {
            //TODO: Validation
            var gameKey = await _gameKeyService.PostGameKeyAsync(User.Identity.Name, gameKeyDto);

            return(CreatedAtAction("GetGameKey", new { id = gameKey.ID }, gameKey));
        }