Esempio n. 1
0
        public async Task <DbFavoriteGames> RemoveFavoriteGamesAsync(DbFavoriteGames news)
        {
            if (ReferenceEquals(news, null))
            {
                throw new ArgumentNullException(nameof(news));
            }

            var deletedItem = _context.FavoriteGames.Remove(news);
            await _context.SaveChangesAsync().ConfigureAwait(false);

            return(deletedItem);
        }
Esempio n. 2
0
        public async Task <FavoriteGames> AddFavoriteGameAsync(int userId, int gameId)
        {
            var user = await _userRepository.GetUserByIdAsync(userId).ConfigureAwait(false);

            if (ReferenceEquals(user, null))
            {
                throw new RequestedResourceNotFoundException($"User with id {userId}");
            }

            var game = await _gameRepository.GetGameByIdAsync(gameId).ConfigureAwait(false);

            if (ReferenceEquals(game, null))
            {
                throw new RequestedResourceNotFoundException($"Game with id {gameId}");
            }

            var favoritesGame = await _favoriteGamesRepository.GetFavoriteGamesForUserAsync(userId).ConfigureAwait(false);

            var savedChannelItem = favoritesGame.SingleOrDefault(item => item.UserId == userId && item.GameId == gameId);

            if (!ReferenceEquals(savedChannelItem, null))
            {
                throw new RequestedResourceHasConflictException
                          ($"The game with id:{gameId} has already been added to the user with id:{userId}.");
            }

            var favoriteGame = new DbFavoriteGames()
            {
                LastModified = DateTime.Now,
                User         = user,
                Games        = game
            };

            var addedItem = await _favoriteGamesRepository.AddFavoriteGamesAsync(favoriteGame).ConfigureAwait(false);

            return(Mapper.Map <FavoriteGames>(addedItem));
        }