Esempio n. 1
0
        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}");
            }
        }
Esempio n. 2
0
        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
                }));
            }
        }
Esempio n. 3
0
 public ActionResult AddBananaConfirmed(BananaModel banana)
 {
     return(View(banana));
 }
Esempio n. 4
0
        public async Task <IHttpActionResult> PurchaseBananas(BananaModel bananas)
        {
            await _bananaService.SoldBananas(bananas);

            return(Ok());
        }