public async Task <UserBeersDTO> AddBeerToWishListAsync(string userName, string beerName) { var user = await _beerOverflowContext.Users.FirstOrDefaultAsync(u => u.UserName == userName); if (user == null) { throw new ArgumentNullException("User is null!"); } var beer = await _beerOverflowContext.Beers.FirstOrDefaultAsync(b => b.BeerName == beerName); if (beer == null) { throw new ArgumentNullException("Beer is null!"); } var userBeer = new UserBeers { UserId = user.Id, BeerId = beer.Id }; try { _beerOverflowContext.UserBeers.Add(userBeer); await _beerOverflowContext.SaveChangesAsync(); } catch (Exception) { throw new InvalidOperationException("Cannot add into database!"); } var userBeerDTO = new UserBeersDTO(user.UserName, user.Id, beer.BeerName, beer.Id); return(userBeerDTO); }
public async Task <UserBeersDTO> AddBeerToDrankListAsync(string userName, string beerName) { var user = await _beerOverflowContext.Users.FirstOrDefaultAsync(u => u.UserName == userName); if (user == null) { throw new ArgumentNullException("User is null!"); } var beer = await _beerOverflowContext.Beers.FirstOrDefaultAsync(b => b.BeerName == beerName); if (beer == null) { throw new ArgumentNullException("Beer is null!"); } var userBeer = await _beerOverflowContext.UserBeers .Where(ub => ub.UserId == user.Id) .FirstOrDefaultAsync(ub => ub.BeerId == beer.Id); if (userBeer == null) { var newUserBeer = new UserBeers { UserId = user.Id, BeerId = beer.Id, DrankOn = DateTime.UtcNow }; _beerOverflowContext.UserBeers.Add(newUserBeer); await _beerOverflowContext.SaveChangesAsync(); } else { if (userBeer.DrankOn == null) { userBeer.DrankOn = DateTime.UtcNow; await _beerOverflowContext.SaveChangesAsync(); } else { throw new ArgumentException("Already drank this beer!"); } } var userBeerDTO = new UserBeersDTO(user.UserName, user.Id, beer.BeerName, beer.Id, userBeer.DrankOn); return(userBeerDTO); }