Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }