Beispiel #1
0
        public async Task <MetricViewModel> GetBananaInfo(DateTime startDate, DateTime endDate)
        {
            try
            {
                using (var context = new BananaStandContext())
                {
                    var bananaPurchased = await context.Bananas_Purchased.Where(x => x.PurchaseDate >= startDate && x.PurchaseDate <= endDate).ToListAsync();

                    return(BananaMapper(bananaPurchased, endDate));
                }
            }
            catch (Exception ex)
            {
                // email dev and/or log error
                throw new Exception($"Error {ex.InnerException}");
            }
        }
Beispiel #2
0
        public async Task PurchaseBananas(BananaModel bananas)
        {
            try
            {
                using (var context = new BananaStandContext())
                {
                    var mappedBananas = BananaPurchaseMapper(bananas);

                    context.Bananas_Purchased.Add(mappedBananas);
                    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}");
            }
        }
Beispiel #3
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}");
            }
        }