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); }
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)); }