Exemplo n.º 1
0
        // GET: Trades
        public ActionResult Index()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            List <Trade>   tList   = new List <Trade>();
            List <TradeVM> tVMList = new List <TradeVM>();

            tList = db.Trades.ToList();
            foreach (Trade tr in tList)
            {
                TradeVM  trVM = new TradeVM();
                AltCoin  a    = db.AltCoins.FirstOrDefault(x => x.AltCoinID == tr.CoinID);
                Exchange e    = db.Exchanges.FirstOrDefault(y => y.ExchangeID == tr.ExchangeID);

                trVM.TradeID          = tr.TradeID;
                trVM.CoinName         = a.CoinName;
                trVM.TradeDate        = tr.TradeDate;
                trVM.ExchangeName     = e.ExchangeName;
                trVM.AmountTraded     = tr.AmountTraded;
                trVM.BoughtYes        = tr.BoughtYes;
                trVM.PriceBTC         = tr.PriceBTC;
                trVM.PriceUSD         = tr.PriceUSD;
                trVM.CommissionAmount = tr.Commission;
                a = db.AltCoins.FirstOrDefault(x => x.AltCoinID == tr.CommissionCoinID);
                trVM.CommissionCoin = a.CoinName;

                tVMList.Add(trVM);
            }

            return(View(tVMList));
        }
Exemplo n.º 2
0
        public ActionResult DeleteConfirmed(int id)
        {
            AltCoin altCoin = db.AltCoins.Find(id);

            db.AltCoins.Remove(altCoin);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
 public ActionResult Edit([Bind(Include = "AltCoinID,CoinName,CoinSymbol")] AltCoin altCoin)
 {
     if (ModelState.IsValid)
     {
         db.Entry(altCoin).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(altCoin));
 }
Exemplo n.º 4
0
        public ActionResult Create([Bind(Include = "AltCoinID,CoinName,CoinSymbol")] AltCoin altCoin)
        {
            if (ModelState.IsValid)
            {
                db.AltCoins.Add(altCoin);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(altCoin));
        }
Exemplo n.º 5
0
        // GET: AltCoins/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AltCoin altCoin = db.AltCoins.Find(id);

            if (altCoin == null)
            {
                return(HttpNotFound());
            }
            return(View(altCoin));
        }
Exemplo n.º 6
0
        // GET: Summary
        public ActionResult Index()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            SummaryVM sVM = new SummaryVM();

            sVM.TotalCValueToday = 0;
            sVM.TotalSValueToday = 0;

            sVM.Coins  = new List <HoldingVM>();
            sVM.Stocks = new List <StockHoldingVM>();

            // Build the Coins model
            List <HoldingVM> cVM = new List <HoldingVM>();
            // Build VM List
            var holdings = db.Holdings.ToList();
            var trades   = db.Trades.ToList();

            //var altCoins = db.AltCoins.ToList();          // Don't need because of globals list
            //var exch = db.Exchanges.ToList();             // Don't need to get Exchanges table since not displayed in Summary
            foreach (Holding h in holdings)
            {
                AltCoin a = Globals.lAltCoins.FirstOrDefault(x => x.AltCoinID == h.CoinID);
                // Exchange e = exch.FirstOrDefault(y => y.ExchangeID == h.ExchangeID);
                HoldingVM hv = new HoldingVM();
                hv.HoldingVMID = h.HoldingID;
                hv.CoinName    = a.CoinName;
                hv.CoinSymbol  = a.CoinSymbol;
                hv.CoinAmount  = h.CoinAmount;
                //hv.ExchangeName = e.ExchangeName;
                hv.CoinValueUSD = Convert.ToSingle(Globals.CoinToUSDtoday(a.APICode));
                // Calculate Average Paid
                float coinTraded = 0, amtPaid = 0, coinT;
                float myCostUSD = 0;
                foreach (Trade t in trades)
                {
                    if (t.CoinID == h.CoinID)
                    {
                        coinT       = t.AmountTraded - t.Commission;
                        coinTraded += coinT;
                        amtPaid    += t.PriceUSD * coinT;
                        myCostUSD  += t.AmountTraded * t.PriceUSD;
                    }
                }
                if (coinTraded > 0)
                {
                    hv.AveragePaid = (amtPaid / coinTraded).ToString();
                }
                else
                {
                    hv.AveragePaid = "";
                }
                if (myCostUSD == 0)
                {
                    hv.CostUSD = "";
                }
                else
                {
                    hv.CostUSD = myCostUSD.ToString();
                }

                /*
                 * hv.CoinValueBTC = Convert.ToSingle(Globals.CoinToUSDtoday(a.APICode)) / Convert.ToSingle(Globals.CoinToUSDtoday("bitcoin"));
                 * hv.Percent1 = Globals.PctChange(a.APICode, 1);
                 * hv.Percent7 = Globals.PctChange(a.APICode, 7);
                 */
                hv.PriceToday         = hv.CoinAmount * hv.CoinValueUSD;
                sVM.TotalCValueToday += hv.PriceToday;

                sVM.Coins.Add(hv);
            }


            // Build the Stocks model
            List <StockHoldingVM> tVM = new List <StockHoldingVM>();
            string sPrice             = "0";
            string sChange            = "0";
            string sVol    = "0";
            string sAvgVol = "0";

            var stocks    = db.StockHoldings.ToList();
            var stkTrades = db.StockTrades.ToList();

            foreach (StockHolding sh in stocks)
            {
                StockHoldingVM shVM = new StockHoldingVM();
                shVM.Ticker       = sh.Ticker;
                shVM.NumberShares = sh.NumberShares;
                shVM.Account      = sh.StockAccount;

                // Calculate average of price paid including commission
                List <StockTrade> lST = new List <StockTrade>();
                lST = stkTrades.Where(x => x.Ticker == sh.Ticker).ToList();
                float cost    = 0;
                float nShares = 0;
                foreach (StockTrade st in lST)
                {
                    cost    += st.Price * st.AmountTraded;// + st.Commission*2;
                    nShares += st.AmountTraded;
                }
                shVM.PricePaid = cost / nShares;

                shVM.Commission = 10;

                // Get price of stock today using Yahoo
                using (WebClient web = new WebClient())
                {
                    string strURL = string.Format("https://finance.yahoo.com/quote/" + sh.Ticker + "?p=" + sh.Ticker);
                    try
                    {
                        string data = web.DownloadString(strURL);
                        int    iStart, iEnd;
                        iStart = data.IndexOf("<!-- react-text: 36 -->") + "<!-- react-text: 36 -->".Length;
                        iEnd   = data.IndexOf("<!", iStart);
                        sPrice = data.Substring(iStart, iEnd - iStart);
                        iStart = data.IndexOf("quote-market-notice") - 100;
                        iEnd   = data.IndexOf("<!-- react-text: 39 -->", iStart) + "<!-- react-text: 39 -->".Length;
                        if (iEnd < 1000)
                        {
                            iEnd = data.IndexOf("<!-- react-text: 38 -->", iStart) + "<!-- react-text: 38 -->".Length;
                        }
                        iStart  = iEnd;
                        iEnd    = data.IndexOf(" (", iStart);
                        sChange = data.Substring(iStart, iEnd - iStart);

                        iStart  = data.IndexOf("<!-- react-text: 74 -->") + "<!-- react-text: 74 -->".Length;
                        iEnd    = data.IndexOf("<!", iStart);
                        sVol    = data.Substring(iStart, iEnd - iStart);
                        iStart  = data.IndexOf("<!-- react-text: 80 -->") + "<!-- react-text: 80 -->".Length;
                        iEnd    = data.IndexOf("<!", iStart);
                        sAvgVol = data.Substring(iStart, iEnd - iStart);
                    }
                    catch
                    {
                    }
                }

                if (Globals.IsNumeric(sPrice))
                {
                    shVM.PriceToday = Convert.ToSingle(sPrice);
                }
                else
                {
                    shVM.PriceToday = 0;
                }
                if (Globals.IsNumeric(sChange))
                {
                    shVM.Change = Convert.ToSingle(sChange);
                }
                else
                {
                    shVM.Change = 0;
                }
                shVM.ValueToday = nShares * shVM.PriceToday;

                if (Globals.IsNumeric(sVol))
                {
                    shVM.Volume = Convert.ToSingle(sVol);
                }
                else
                {
                    shVM.Volume = 0;
                }

                if (Globals.IsNumeric(sAvgVol))
                {
                    shVM.AvgVol = Convert.ToSingle(sAvgVol);
                }
                else
                {
                    shVM.AvgVol = 0;
                }

                sVM.TotalSValueToday += shVM.ValueToday;

                sVM.Stocks.Add(shVM);
            }


            // DJI and NASDAQ
            using (WebClient web = new WebClient())
            {
                string strURL = string.Format("https://finance.yahoo.com/quote/^DJI?p=^DJI");
                try
                {
                    string data = web.DownloadString(strURL);
                    int    iStart, iEnd;
                    iStart = data.IndexOf("<!-- react-text: 36 -->") + "<!-- react-text: 36 -->".Length;
                    iEnd   = data.IndexOf("<!", iStart);
                    sPrice = data.Substring(iStart, iEnd - iStart);
                    iStart = data.IndexOf("quote-market-notice") - 100;
                    iEnd   = data.IndexOf("<!-- react-text: 39 -->", iStart) + "<!-- react-text: 39 -->".Length;
                    if (iEnd < 1000)
                    {
                        iEnd = data.IndexOf("<!-- react-text: 38 -->", iStart) + "<!-- react-text: 38 -->".Length;
                    }
                    iStart   = iEnd;
                    iEnd     = data.IndexOf(" (", iStart);
                    sChange  = data.Substring(iStart, iEnd - iStart);
                    sVM.DJI  = sPrice;
                    sVM.DJIC = Convert.ToSingle(sChange);

                    strURL = string.Format("https://finance.yahoo.com/quote/^IXIC?p=^IXIC");
                    data   = web.DownloadString(strURL);
                    iStart = data.IndexOf("<!-- react-text: 36 -->") + "<!-- react-text: 36 -->".Length;
                    iEnd   = data.IndexOf("<!", iStart);
                    sPrice = data.Substring(iStart, iEnd - iStart);
                    iStart = data.IndexOf("quote-market-notice") - 100;
                    iEnd   = data.IndexOf("<!-- react-text: 39 -->", iStart) + "<!-- react-text: 39 -->".Length;
                    if (iEnd < 1000)
                    {
                        iEnd = data.IndexOf("<!-- react-text: 38 -->", iStart) + "<!-- react-text: 38 -->".Length;
                    }
                    iStart   = iEnd;
                    iEnd     = data.IndexOf(" (", iStart);
                    sChange  = data.Substring(iStart, iEnd - iStart);
                    sVM.NAS  = sPrice;
                    sVM.NASC = Convert.ToSingle(sChange);
                }
                catch
                {
                    sVM.DJI  = "Error";
                    sVM.DJIC = -1;
                    sVM.NAS  = "Error";
                    sVM.NASC = -1;
                }
            }
            return(View(sVM));
        }
Exemplo n.º 7
0
        // GET: AltCoins
        public ActionResult Index()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (db.AltCoins.ToList().Count == 0)
            {
                // Get the AltCoins
                var strValue   = string.Empty;
                var strRequest = (HttpWebRequest)WebRequest.Create("https://api.coinmarketcap.com/v1/ticker/");
                strRequest.Timeout     = 5000;
                strRequest.Method      = "GET";
                strRequest.ContentType = "text/plain";
                using (var _webResponse = (HttpWebResponse)strRequest.GetResponse())
                {
                    var _webResponseStatus = _webResponse.StatusCode;
                    var _stream            = _webResponse.GetResponseStream();
                    using (var _streamReader = new StreamReader(_stream))
                    {
                        strValue = _streamReader.ReadToEnd();
                    }
                }

                // Parse the AltCoins
                if (strValue != string.Empty)
                {
                    //MessageBox.Show(_plainText);
                    // Parse return string for coin name and symbol
                    int index = 0;
                    int index2;
                    int coinIndex = -1;
                    while (true)
                    {
                        index = strValue.IndexOf("name", index);
                        if (index <= 0)
                        {
                            break;
                        }
                        if (index > 0)
                        {
                            // Get coin name
                            index += 8;
                            index2 = strValue.IndexOf("\"", index);
                            Globals.strCoinName[++coinIndex] = strValue.Substring(index, index2 - index);
                            index = index2;

                            //MessageBox.Show(strCoinName[coinIndex-1]);
                        }
                    }
                    Array.Sort(Globals.strCoinName);

                    coinIndex = -1;
                    for (int i = 0; i < Globals.strCoinName.Length; ++i)
                    {
                        index = strValue.IndexOf(Globals.strCoinName[i]);
                        // Get coin symbol
                        index  = strValue.IndexOf("symbol", index) + 10;
                        index2 = strValue.IndexOf("\"", index);
                        Globals.strCoinSymbol[++coinIndex] = strValue.Substring(index, index2 - index);
                        string strName   = Globals.strCoinName[coinIndex];
                        string strSymbol = Globals.strCoinSymbol[coinIndex];
                    }
                    coinIndex = -1;
                    for (int i = 0; i < Globals.strCoinName.Length; ++i)
                    {
                        index = strValue.IndexOf(Globals.strCoinName[i]) - 100;
                        if (index < 0)
                        {
                            index = 0;
                        }
                        // Get coin symbol
                        index  = strValue.IndexOf("id", index) + 6;
                        index2 = strValue.IndexOf("\"", index);
                        Globals.strAPICode[++coinIndex] = strValue.Substring(index, index2 - index);
                        string strName    = Globals.strCoinName[coinIndex];
                        string strSymbol  = Globals.strCoinSymbol[coinIndex];
                        string strAPICode = Globals.strAPICode[coinIndex];
                    }
                }

                // Insert the records
                for (int i = 0; i < Globals.strCoinName.Count(); ++i)
                {
                    AltCoin ac = new AltCoin()
                    {
                        CoinName   = Globals.strCoinName[i],
                        CoinSymbol = Globals.strCoinSymbol[i],
                        APICode    = Globals.strAPICode[i]
                    };
                    db.AltCoins.Add(ac);
                }
                AltCoin acUS = new AltCoin()
                {
                    CoinName   = "US Dollar",
                    CoinSymbol = "US$",
                    APICode    = "NA"
                };
                db.AltCoins.Add(acUS);
                db.SaveChanges();
            }
            return(View(db.AltCoins.ToList()));
        }
Exemplo n.º 8
0
        // GET: Holdings
        public ActionResult Index()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            // Build VM List
            var holdings             = db.Holdings.ToList();
            var trades               = db.Trades.ToList();
            List <HoldingVM> hVMList = new List <HoldingVM>();

            foreach (Holding h in holdings)
            {
                AltCoin   a  = db.AltCoins.FirstOrDefault(x => x.AltCoinID == h.CoinID);
                Exchange  e  = db.Exchanges.FirstOrDefault(y => y.ExchangeID == h.ExchangeID);
                HoldingVM hv = new HoldingVM();
                hv.HoldingVMID  = h.HoldingID;
                hv.CoinName     = a.CoinName;
                hv.CoinSymbol   = a.CoinSymbol;
                hv.CoinAmount   = h.CoinAmount;
                hv.ExchangeName = e.ExchangeName;
                hv.CoinValueUSD = Convert.ToSingle(Globals.CoinToUSDtoday(a.APICode));
                // Calculate Average Paid
                float coinTraded = 0, amtPaid = 0, coinT;
                float myCostUSD = 0;
                foreach (Trade t in trades)
                {
                    if (t.CoinID == h.CoinID)
                    {
                        coinT       = t.AmountTraded - t.Commission;
                        coinTraded += coinT;
                        amtPaid    += t.PriceUSD * coinT;
                        myCostUSD  += t.AmountTraded * t.PriceUSD;
                    }
                }
                if (coinTraded > 0)
                {
                    hv.AveragePaid = (amtPaid / coinTraded).ToString();
                }
                else
                {
                    hv.AveragePaid = "";
                }
                if (myCostUSD == 0)
                {
                    hv.CostUSD = "";
                }
                else
                {
                    hv.CostUSD = myCostUSD.ToString();
                }

                hv.CoinValueBTC = Convert.ToSingle(Globals.CoinToUSDtoday(a.APICode)) / Convert.ToSingle(Globals.CoinToUSDtoday("bitcoin"));
                hv.PriceToday   = hv.CoinAmount * hv.CoinValueUSD;
                hv.Percent1     = Globals.PctChange(a.APICode, 1);
                hv.Percent7     = Globals.PctChange(a.APICode, 7);
                hVMList.Add(hv);
            }
            return(View(hVMList));
        }