예제 #1
0
 public void AddToUserWallet(decimal coin, int count)
 {
     using (var context = new VendingContext())
     {
         AddToUserWallet(coin, count, context);
         context.SaveChanges();
     }
 }
예제 #2
0
 public void AddProduct(ItemToSale item)
 {
     using (var context = new VendingContext())
     {
         context.ItemsToSale.Add(item);
         context.SaveChanges();
     }
 }
예제 #3
0
        public bool Buy(ItemToSale product, out string errorMessage)
        {
            errorMessage = null;
            if (!EnoughMoneyToBuy(product))
            {
                errorMessage = "Недостаточно внесено денег для покупки";
                return false;
            }

            using (var context = new VendingContext())
            {
                var coinsInserted = context.MoneyCache.Select(x => x.Count * x.Nominal).ToList();
                var moneyInCacheCount = coinsInserted.Aggregate((arg1, arg2) => arg1 + arg2);
                var needReturn = moneyInCacheCount - product.Price;
                foreach (var coins in context.MoneyCache)
                {
                    AddToBank(coins.Nominal, coins.Count, context);
                }
                foreach (MoneyCache cache in context.MoneyCache)
                {
                    cache.Count = 0;
                }

                ReturnToCache(needReturn, context);
                var productToBuy = context.ItemsToSale.First(x => x.Id == product.Id);
                productToBuy.AvailableCount -= 1;
                context.SaveChanges();
            }
            return true;
        }
예제 #4
0
 public void MoneyBack()
 {
     using (var context = new VendingContext())
     {
         foreach (var coins in context.MoneyCache)
         {
             AddToUserWallet(coins.Nominal, coins.Count, context);
         }
         foreach (MoneyCache cache in context.MoneyCache)
         {
             cache.Count = 0;
         }
         context.SaveChanges();
     }
 }
예제 #5
0
        public void InsertCoin(decimal nominal)
        {
            using (var context = new VendingContext())
            {
                var coins = context.UserWallet.FirstOrDefault(x => x.Nominal == nominal);
                if (coins != null && coins.Count >= 1)
                {
                    coins.Count -= 1;
                    AddToCache(nominal, 1);
                    context.SaveChanges();
                }

            }
        }