public ActionResult Buy(Buy model) { var user = _context.Users.Find(User.Identity.GetUserId()); // Kullanıcı satın alma işlemini yapar ve bir sonuç döner. BuyResult result = BuyFromSupplier(model, user); // Eğer satın alma olduysa yani tutar > 0 ' ise komisyon alınır ve bu kullanıcının finans geçmişine eklenir. if (result.Amount > 0) { double commission = GetCommission(user, result.Amount); FinanceHistory financeHistory = new FinanceHistory() { CustomerId = result.CustomerId, Money = result.Amount + commission, Date = DateTime.Now, FinanceTypeId = 4, MoneyTypeId = 1 }; _context.FinanceHistories.Add(financeHistory); _context.SaveChanges(); ViewBag.Success = true; ViewBag.Message = $"{result.PurchasedQuantity} adet ürün {result.Amount} TL' den alındı. İşlem için {commission} TL ücret kesildi."; } // Eğer kullanıcı belirli bir fiyattan almak istiyorsa bu istek listesine eklenir. else if (model.Price > 0) { LimitBuy limitBuy = new LimitBuy { Date = DateTime.Now, Price = model.Price, ProductId = model.ProductId, UserId = user.Id, Quantity = model.Quantity }; _context.LimitBuys.Add(limitBuy); _context.SaveChanges(); ViewBag.Success = true; ViewBag.Message = $" {model.Quantity} tane ürün {model.Price}TL' den alınmak üzere istek listesine eklendi."; } else { ViewBag.Success = false; ViewBag.Message = "Para yetmediği için ürün alınamadı."; } ViewBag.Product = _context.Products.Find(model.ProductId); return(View()); }
// Verilen ürün idsine sahip bir istek listesi varsa o ürünü satın almayı dener. Satın aldığı kadar istek listesinden azaltır. // Komisyon alır ve işlem geçmişine ekler. public void LimitBuy(int productId) { var limitBuys = _context.LimitBuys.Where(l => l.ProductId == productId).OrderByDescending(l => l.Price); foreach (var item in limitBuys) { var user = _context.Users.Find(item.UserId); var result = BuyFromSupplier(new Buy { ProductId = item.ProductId, Quantity = item.Quantity, Price = item.Price }, user); if (result.Amount == 0) { break; } if (result.Amount > 0) { double commission = GetCommission(user, result.Amount); FinanceHistory financeHistory = new FinanceHistory() { CustomerId = result.CustomerId, Money = result.Amount + commission, Date = DateTime.Now, FinanceTypeId = 4, MoneyTypeId = 1 }; _context.FinanceHistories.Add(financeHistory); } item.Quantity -= result.PurchasedQuantity; if (item.Quantity == 0) { _context.LimitBuys.Remove(item); } } _context.SaveChanges(); }
public ActionResult LoadMoney(int Id, string submit, string rateCode, int Quantity = 0) { int money; switch (submit) { case "50 TL": money = 50; break; case "100 TL": money = 100; break; case "200 TL": money = 200; break; default: money = Quantity; break; } int moneyType = Convert.ToInt32(rateCode); FinanceHistory financeHistory = new FinanceHistory() { CustomerId = Id, Money = money, Date = DateTime.Now, FinanceTypeId = 2, MoneyTypeId = moneyType }; _context.FinanceHistories.Add(financeHistory); _context.SaveChanges(); return(RedirectToAction("Cuzdanim")); }