public async Task AddToDrankListAsync(int userId, User user, int beerId)
        {
            var beer = await this.context.Beers
                       .Where(x => x.Id == beerId)
                       .FirstOrDefaultAsync();

            var check = await this.context.DrankLists
                        .Include(r => r.User)
                        .Where(x => x.BeerId == beerId)
                        .Where(x => x.UserId == userId)
                        .FirstOrDefaultAsync();

            if (check != null)
            {
                return;
            }

            var dranklist = new DrankList
            {
                UserId = userId,
                User   = user,
                BeerId = beerId,
                Beer   = beer
            };

            await this.context.DrankLists.AddAsync(dranklist);

            await this.context.SaveChangesAsync();
        }
Beispiel #2
0
 public static DranklistDTO GetDto(this DrankList entity)
 {
     if (entity == null)
     {
         throw new ArgumentException();
     }
     ;
     return(new DranklistDTO
     {
         UserId = entity.UserId,
         User = entity.User.UserName,
         BeerId = entity.BeerId,
         Beer = entity.Beer.Name
     });
 }
Beispiel #3
0
        public async Task <UserDTO> Drink(int userID, int beerID)
        {
            var theUser = await this._context.Users
                          .Include(u => u.DrankLists)
                          .ThenInclude(dl => dl.Beer)
                          .ThenInclude(b => b.Style)
                          .Include(u => u.DrankLists)
                          .ThenInclude(dl => dl.Beer)
                          .ThenInclude(b => b.Brewery)
                          .ThenInclude(b => b.Country)
                          .FirstOrDefaultAsync(u => u.Id == userID);

            var theBeer = await this._context.Beers
                          .FirstOrDefaultAsync(b => b.ID == beerID);

            var theNewDrankList = new DrankList()
            {
                UserID = theUser.Id,
                User   = theUser,
                BeerID = theBeer.ID,
                Beer   = theBeer,
            };

            if (theUser.DrankLists.Contains(theNewDrankList))
            {
                throw new ArgumentException("Already drank this beer.");
            }



            UserDTO modelToReturn;

            try
            {
                this._context.DrankLists.Add(theNewDrankList);
                await this._context.SaveChangesAsync();

                modelToReturn = theUser.MapUserToDTO();
            }
            catch (Exception)
            {
                return(null);
            }

            return(modelToReturn);
        }
Beispiel #4
0
        public async Task AddToDrankList_If_Successfull()
        {
            var options      = TestUtils.GetOptions(nameof(AddToDrankList_If_Successfull));
            var mockDateTime = new Mock <IDateTimeProvider>();

            var user = new User
            {
                UserName = "******",
            };
            var beer = new Beer
            {
                Name = "Zagorka",
            };

            var drankList = new DrankList
            {
                BeerId = 1,
                UserId = 1,
            };

            using (var arrangeContext = new BeeroverflowContext(options))
            {
                await arrangeContext.Users.AddAsync(user);

                await arrangeContext.Beers.AddAsync(beer);

                await arrangeContext.DrankLists.AddAsync(drankList);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new BeeroverflowContext(options))
            {
                var sut = new UserService(assertContext, mockDateTime.Object);
                await sut.AddToDrankListAsync(1, user, 1);

                var result = assertContext.DrankLists.Where(x => x.BeerId == 1 || x.UserId == 1).FirstOrDefault();

                Assert.AreEqual(user.Id, result.UserId);
                Assert.AreEqual(beer.Id, result.BeerId);
            }
        }
Beispiel #5
0
        public async Task ReturnDrankList_If_Successfull()
        {
            var options      = TestUtils.GetOptions(nameof(ReturnDrankList_If_Successfull));
            var mockDateTime = new Mock <IDateTimeProvider>();

            var country = new Country
            {
                Name = "Romania"
            };
            var brewery = new Brewery
            {
                Name      = "Ariana",
                CountryId = 1
            };
            var style = new Style
            {
                Name = "Pale"
            };

            var beer = new Beer
            {
                Name      = "Zagorka",
                CountryId = 1,
                BreweryId = 1,
                StyleId   = 1,
                Abv       = 3
            };

            var user = new User
            {
                UserName = "******",
                Country  = "Bulgaristan"
            };

            var drankList = new DrankList
            {
                BeerId = 1,
                UserId = 1,
            };


            using (var arrangeContext = new BeeroverflowContext(options))
            {
                await arrangeContext.Countries.AddAsync(country);

                await arrangeContext.Breweries.AddAsync(brewery);

                await arrangeContext.Styles.AddAsync(style);

                await arrangeContext.Beers.AddAsync(beer);

                await arrangeContext.Users.AddAsync(user);

                await arrangeContext.DrankLists.AddAsync(drankList);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new BeeroverflowContext(options))
            {
                var sut       = new UserService(assertContext, mockDateTime.Object);
                var resultDTO = await sut.RetreiveDrankListAsync(1);

                var result = resultDTO.ToArray();

                Assert.AreEqual("Zagorka", result[0].Name);
                Assert.AreEqual(1, result.Count());
            }
        }