コード例 #1
0
ファイル: TradeMatchingAlgo.cs プロジェクト: prajjwal21/STP
        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();
        }
コード例 #2
0
ファイル: AdminController.cs プロジェクト: prajjwal21/STP
        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"));
        }