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