public async Task <PurchaseHistory> BuyCart(int accountid, List <PurchaseItem> cookieList) { using (CookieShopDbContext context = _contextFactory.CreateDbContext()) { var account = await context.Accounts.FirstAsync((e) => e.Id == accountid); // var cookiedb = (await context.Cookies.FirstAsync((e) => e.Id == cookie.Id)); var boughtCookies = new PurchaseHistory() { //Cookie = cookiedb, //Amount = amount, Items = cookieList, AccountId = accountid, DateProcessed = DateTime.Now, IsPurchase = true }; var result = await context.PurchaseHistory.AddAsync(boughtCookies); foreach (var cookie in cookieList) { var cookiedb = (await context.Cookies.FirstAsync((e) => e.Id == cookie.CookieId)); var stock = await context.Stocks.FirstOrDefaultAsync((e) => e.Cookie.Id == cookie.CookieId); stock.Amount--; account.Balance -= cookiedb.Price * cookie.Amount; } context.SaveChanges(); return(result.Entity); } //throw new NotImplementedException(); }
public async Task <Cookie> UpdateStock(int cookieId, int amount) { using (CookieShopDbContext context = _contextFactory.CreateDbContext()) { var stock = await context.Stocks.FirstOrDefaultAsync(s => s.Cookie.Id == cookieId); stock.Amount = amount; context.SaveChanges(); return(await context.Cookies .Include(c => c.Stock) .Include(c => c.AccountsIsFavouredBy) .FirstOrDefaultAsync(s => s.Id == cookieId)); } }
public async Task <CookieRating> AddRatings(int userId, int cookieId, int rating) { var cookieRating = new CookieRating() { CookieID = cookieId, UserID = userId, Rating = rating }; using (CookieShopDbContext context = _contextFactory.CreateDbContext()) { var newRating = await context.CookieRatings.AddAsync(cookieRating); context.SaveChanges(); return(newRating.Entity); } }
public async Task <Account> RemoveFromFavorites(int accountid, Cookie cookie) { var favoriteCookie = new FavoriteCookies() { CookieID = cookie.Id, AccountID = accountid }; using (CookieShopDbContext context = _contextFactory.CreateDbContext()) { context.FavoriteCookies.Remove(favoriteCookie); context.SaveChanges(); return(await context.Accounts .Include(a => a.FavoriteCookies) .FirstOrDefaultAsync((e) => e.Id == accountid)); } }