public void UpdateTblHoldings(int buyerUid, int sellerUid, int StockId, int qty) { tblHoldings buyer = db.tblHoldings.SingleOrDefault(x => x.uid == buyerUid && x.stockId == StockId); if (buyer == null) { tblHoldings rec = new tblHoldings(); rec.uid = buyerUid; rec.stockId = StockId; rec.Qty = qty; rec.remQty = qty; db.tblHoldings.Add(rec); } else { buyer.Qty = buyer.Qty + qty; buyer.remQty = buyer.remQty + qty; db.SaveChanges(); } tblHoldings seller = db.tblHoldings.SingleOrDefault(x => x.uid == sellerUid && x.stockId == StockId); seller.Qty = seller.Qty - qty; db.SaveChanges(); }
public ActionResult AddStock(string submit) { if (Session["user"] == null || Session["userName"] == null) { return(Redirect("~/Login.aspx")); } var user = Session["user"] as tblUser; tblUser u1 = manager.StpDBEntities.tblUsers.Find(user.uid); ViewBag.fname = u1.fname; ViewBag.lname = u1.lname; int uid = user.uid; int id = Convert.ToInt32(submit); manager.tblMarketdata = manager.StpDBEntities.tblMarketdatas.Find(id); manager.tblStock.stockId = 1; manager.tblStock.stockName = manager.tblMarketdata.stockName; manager.tblStock.quantity = manager.tblMarketdata.qty; //calling a function to randomly give holdings to existing customers //give all users equal share of qty of stock and add to holdings table //reduce their respective wallet balance int qty = manager.tblMarketdata.qty.Value; System.Diagnostics.Debug.WriteLine("this is qty " + qty); var user_list = manager.StpDBEntities.tblUsers.Where(t => t.role == "U" && t.status == "A").ToList(); int user_count = user_list.Count(); int share_per_user = qty / user_count; //checking if there are left overs after dividing int total_qty = share_per_user * user_count; int extra = 0; if (total_qty < qty) { extra = qty - total_qty; } tblUser first_user = null; foreach (tblUser u in manager.StpDBEntities.tblUsers.Where(t => t.role == "U" && t.status == "A")) { if (first_user == null) { first_user = u; } int user_id = u.uid; tblHoldings holding = new tblHoldings(); holding.uid = user_id; holding.stockId = manager.tblStock.stockId; holding.Qty = share_per_user; holding.remQty = share_per_user; manager.StpDBEntities.tblHoldings.Add(holding); } if (extra != 0) { int user_id = first_user.uid; tblHoldings holding = new tblHoldings(); holding.uid = user_id; holding.stockId = manager.tblStock.stockId; holding.Qty = share_per_user; manager.StpDBEntities.tblHoldings.Add(holding); } manager.tblStock.quantity_remaining = 0; manager.tblStock.addedBy = uid; manager.tblStock.status = "A"; //insert into collection manager.StpDBEntities.tblStocks.Add(manager.tblStock); //inserted data to stock price table manager.tblStocksPrice.stockId = manager.tblStock.stockId; manager.tblStocksPrice.timeOfDay = DateTime.Now; manager.tblStocksPrice.currentPrice = manager.tblMarketdata.currentPrice; manager.tblStocksPrice.lowPrice = manager.tblMarketdata.currentPrice; manager.tblStocksPrice.highPrice = manager.tblMarketdata.currentPrice; manager.StpDBEntities.tblStocksPrices.Add(manager.tblStocksPrice); //change status to added in tbl market data manager.tblMarketdata.status = "A"; manager.StpDBEntities.SaveChanges(); return(RedirectToAction("listofstocks")); }