public void AddToUserWallet(decimal coin, int count) { using (var context = new VendingContext()) { AddToUserWallet(coin, count, context); context.SaveChanges(); } }
public void AddProduct(ItemToSale item) { using (var context = new VendingContext()) { context.ItemsToSale.Add(item); context.SaveChanges(); } }
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; }
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(); } }
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(); } } }