public async Task SoldBananas(BananaModel bananas) { try { using (var context = new BananaStandContext()) { var soldList = new List <Bananas_Sold>(); var sellableBananas = context.Bananas_Purchased.Where(x => x.ExpirationDate > bananas.TransactionDate && x.Sold < x.Bananas).OrderBy(x => x.ExpirationDate).ToList(); var soldBananas = bananas.Bananas; // updating sold count for purchased bananas table for (var i = 0; i < sellableBananas.Count; i++) { // sold all bananas that was purchased with left over if (sellableBananas[i].Sold + soldBananas > sellableBananas[i].Bananas) { soldBananas -= sellableBananas[i].Bananas; sellableBananas[i].Sold = sellableBananas[i].Bananas; soldList.Add(BananaSoldMapper(sellableBananas[i].Sold, sellableBananas[i].Id, bananas.TransactionDate)); } // no more bananas to roll over else { sellableBananas[i].Sold += soldBananas; soldList.Add(BananaSoldMapper(sellableBananas[i].Sold, sellableBananas[i].Id, bananas.TransactionDate)); break; } } // insert into sold bananas table context.Bananas_Sold.AddRange(soldList); await context.SaveChangesAsync(); } } catch (Exception ex) { // send email to dev team and/or log events throw new Exception($"Error connecting to Database. Error: {ex.Message}"); } }
public ActionResult AddBananaToBasket(BananaModel banana) { var bananaInStorage = repo.GetBananaById(banana.Id); if (bananaInStorage.Quantity <= 0 || banana.Quantity > bananaInStorage.Quantity) { ViewBag.Title = "Please insert correct quantity for the product!"; return(View(bananaInStorage)); } else { repo.BananaDecreaseQuantity(banana.Quantity, bananaInStorage.Id); repo.AddBananaToBasket(bananaInStorage.Id, User.Identity.Name.ToString(), banana.Quantity); int storeId = Convert.ToInt32(TempData["storeId"]); return(RedirectToAction("BananaToBasketConfirmed", new { bananaId = banana.Id, orderedQuantity = banana.Quantity, storeId = storeId })); } }
public ActionResult AddBananaConfirmed(BananaModel banana) { return(View(banana)); }
public async Task <IHttpActionResult> PurchaseBananas(BananaModel bananas) { await _bananaService.SoldBananas(bananas); return(Ok()); }