public ActionResult Statistics(string currency) { var Currencies = CoinValues.GetStatistic().Where(cur => cur.Name == currency); var BitcoinPrice = CoinValues.GetValues().Where(c => c.Name == "Bitcoin").First().Price; if (currency == null || Currencies.Count() == 0 || Currencies.Count() > 1) { return(View("Index")); } Coin Currency = Currencies.First(); var db = new SiteDbContext(); List <LimitOrder> Orders = db.LimitOrders.Where(c => c.Currency == Currency.Name).ToList(); List <Transaction> Transactions = db.Transactions.Where(c => c.Currency == Currency.Name).ToList(); Statistics statistics = new Statistics(); statistics.Volume = Transactions.Sum(tr => tr.TotalUSD); statistics.TotalTransactions = Transactions.Count; statistics.Currency = Currency; statistics.OpenOrders = Orders.Count; statistics.Orders = Orders; statistics.Transactions = Transactions.OrderByDescending(tr => tr.Date).ToList(); statistics.BitcoinPrice = BitcoinPrice; return(View(statistics)); }
public ActionResult RefreshCurrency(string currencyname) { var coins = CoinValues.GetValues().ToList(); Coin coin = coins .Where(v => v.Name.Contains(currencyname)) .First(); Coin Bitcoin = coins .Where(v => v.Name == "Bitcoin".Replace(" ", string.Empty)) .First(); decimal CurrencyUsdPrice = coin.Price; decimal BitcoinPrice = Bitcoin.Price; var db = new SiteDbContext(); var user = db.Users.Find(User.Identity.GetUserId()); var UserUsdBalance = user.Balance * BitcoinPrice; var UserCurrencyBalance = user.Wallet[currencyname.Replace(" ", string.Empty)]; var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { CurrencyUsdPrice = CurrencyUsdPrice, BitcoinPrice = BitcoinPrice, UserBtcBalance = user.Balance, UserUsdBalance = UserUsdBalance, UserCurrencyBalance = UserCurrencyBalance, UserOrders = user.LimitOrders.ToList() }, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects }); return(Json(Data, JsonRequestBehavior.AllowGet)); }
public ActionResult Sell(string amount, string name) { decimal d; if (!decimal.TryParse(amount, out d)) { return(View("Index")); } var userId = User.Identity.GetUserId(); decimal sold = decimal.Parse(amount, CultureInfo.InvariantCulture); decimal currencyPrice = CoinValues.GetValues().Where(v => v.Name == name).First().Price; decimal bitcoin = CoinValues.GetBtcValue().Price; decimal boughtPrice = sold * currencyPrice; decimal btcPrice = boughtPrice / bitcoin; using (var db = new SiteDbContext()) { var user = db.Users.Find(userId); var userBTC = user.Balance; if (sold > user.Wallet[name.Replace(" ", string.Empty)] || sold < 0) { return(View("Index")); } user.Wallet[name.Replace(" ", string.Empty)] -= sold; user.Balance += btcPrice; //add Transaction var transaction = new Transaction() { Amount = sold, Currency = name, Date = DateTime.Now, User = user, Type = "Sold", CurrencyPrice = currencyPrice, TotalUSD = sold * currencyPrice }; db.Transactions.Add(transaction); db.SaveChanges(); var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { CurrencyCurrentPrice = currencyPrice, CurrencyBalance = user.Wallet[name.Replace(" ", string.Empty)], UserBtcBalance = user.Balance, UserUsdBalance = user.Balance * CoinValues.GetBtcValue().Price }); ViewBag.Result = "Successfully"; return(Json(Data, JsonRequestBehavior.AllowGet)); } }
public ActionResult Index(string currency) { if (currency == null) { // var Coins = CoinValues.GetValues().Skip(1).Take(49).ToList(); // for (int i = 2; i < 51; i++) // { // var image = Coins[i-2].CoinImage; // // var number = i + 1; // using (WebClient client = new WebClient()) // { // client.DownloadFile(new Uri(image), Server.MapPath(Path.Combine("~/Resources/CoinImages/", +i + ".png"))); // } // } return(View()); } var CurrencyName = CoinValues.GetCurrencyName().Where(c => c.Value == currency).First().Value; var tradeData = new TradePage(); tradeData.Name = CurrencyName; tradeData.Price = CoinValues.GetValues().Where(c => c.Name == CurrencyName).First().Price; tradeData.PriceBTC = (tradeData.Price / CoinValues.GetBtcValue().Price); tradeData.PriceBtcString = string.Format("{0:F8}", tradeData.PriceBTC).Replace(",", "."); tradeData.ImageNumber = CoinValues.GetCurrencyName().Where(c => c.Value == currency).First().Key; tradeData.AllCoins = CoinValues.GetCurrencyName(); using (var db = new SiteDbContext()) { var user = db.Users.Find(User.Identity.GetUserId()); tradeData.UserBalanceBTC = user.Balance; tradeData.UserBalanceUSD = user.Balance * CoinValues.GetBtcValue().Price; user.Wallet = user.Wallet; user.LimitOrders = user.LimitOrders.OrderByDescending(order => order.OrderDate).ToList(); tradeData.User = user; tradeData.CurrencyBalance = user.Wallet[currency.Replace(" ", string.Empty)]; } return(View("TradePage", tradeData)); }
public ActionResult BuyLimitOrder(string currencyname, string buyamount, string buyatprice) { var userId = User.Identity.GetUserId(); var db = new SiteDbContext(); var user = db.Users.Find(userId); decimal BuyAmount = decimal.Parse(buyamount, CultureInfo.InvariantCulture); decimal BuyAtPrice = decimal.Parse(buyatprice, CultureInfo.InvariantCulture); if (BuyAmount == 0 || BuyAtPrice == 0 || BuyAtPrice < 0 || BuyAmount < 0) { return(View("Index")); } var TotalOrderBtcCost = BuyAmount * BuyAtPrice; var Coins = CoinValues.GetValues().ToList(); if (Coins.Where(c => c.Name.Contains(currencyname)).Count() == 0) { return(View("TradePage")); } if (TotalOrderBtcCost > user.Balance) { return(View("TradePage")); } LimitOrder order = new LimitOrder() { User = user, Amount = BuyAmount, Currency = currencyname, AtPrice = BuyAtPrice, OrderType = "Buy", OrderDate = DateTime.Now }; db.LimitOrders.Add(order); user.Balance -= TotalOrderBtcCost; db.SaveChanges(); var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { UserBtc = user.Balance, UserUsd = user.Balance * CoinValues.GetBtcValue().Price }); return(Json(Data, JsonRequestBehavior.AllowGet)); }
public ActionResult SellLimitOrder(string currencyname, string sellamount, string sellatprice) { var userId = User.Identity.GetUserId(); var db = new SiteDbContext(); var user = db.Users.Find(userId); decimal SellAmount = decimal.Parse(sellamount, CultureInfo.InvariantCulture); decimal BuyAtPrice = decimal.Parse(sellatprice, CultureInfo.InvariantCulture); var TotalOrderBtcCost = SellAmount * BuyAtPrice; var Coins = CoinValues.GetValues().ToList(); if (Coins.Where(c => c.Name.Contains(currencyname)).Count() == 0) { return(View("TradePage")); } if (user.Wallet[currencyname.Replace(" ", string.Empty)] < SellAmount) { return(View("TradePage")); } LimitOrder order = new LimitOrder() { User = user, Amount = SellAmount, Currency = currencyname, OrderType = "Sell", AtPrice = BuyAtPrice, OrderDate = DateTime.Now }; db.LimitOrders.Add(order); user.Wallet[currencyname.Replace(" ", string.Empty)] -= SellAmount; db.SaveChanges(); var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { UserCurrency = user.Wallet[currencyname.Replace(" ", string.Empty)] }); return(Json(Data, JsonRequestBehavior.AllowGet)); }
public ActionResult Validate(string currencyname) { var db = new SiteDbContext(); var user = db.Users.Find(User.Identity.GetUserId()); var UserBtcBalance = user.Balance; var UserCurrencyBalance = user.Wallet[currencyname.Replace(" ", string.Empty)]; var CurrencyPrice = CoinValues.GetValues().Where(v => v.Name.Contains(currencyname)).First(); var BitcoinPrice = CoinValues.GetBtcValue().Price; var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { UserBtcBalance = UserBtcBalance, UserCurrencyBalance = UserCurrencyBalance, CurrencyPrice = CurrencyPrice.Price, BitcoinPrice = BitcoinPrice }); return(Json(Data, JsonRequestBehavior.AllowGet)); }
private void TaskLoop() { while (m_running) { var Coins = CoinValues.GetValues(); var Bitcoin = Coins.Where(name => name.Name.Contains("Bitcoin")).First(); var db = new SiteDbContext(); foreach (var coin in Coins) { CurrenciesChart chart = new CurrenciesChart() { CurrencyName = coin.Name, Date = DateTime.Now, CurrencyUsdValue = coin.Price, CurrencyBtcValue = coin.Price / Bitcoin.Price }; db.CurrenciesCharts.Add(chart); } db.SaveChanges(); Thread.Sleep(m_interval); } }
public static decimal CalculateTotalBalance(ApplicationUser User) { List <Coin> Coins = CoinValues.GetValues(); List <LimitOrder> UserOrders = User.LimitOrders.ToList(); Dictionary <int, string> CurrencyNames = CoinValues.GetCurrencyName(); decimal TotalBalanceUSD = 0.00m; var Bitcoin = Coins.Where(c => c.Name.Contains("Bitcoin")).First().Price; TotalBalanceUSD += Bitcoin * User.Balance; TotalBalanceUSD += UserOrders.Sum(ord => (ord.AtPrice * Bitcoin) * ord.Amount); var Ethereum = Coins.Where(c => c.Name.Contains(CurrencyNames[2])).First().Price; TotalBalanceUSD += Ethereum * User.Wallet.Ethereum; var XRP = Coins.Where(c => c.Name.Contains(CurrencyNames[3])).First().Price; TotalBalanceUSD += XRP * User.Wallet.XRP; var EOS = Coins.Where(c => c.Name.Contains(CurrencyNames[4])).First().Price; TotalBalanceUSD += EOS * User.Wallet.EOS; var Litecoin = Coins.Where(c => c.Name.Contains(CurrencyNames[5])).First().Price; TotalBalanceUSD += Litecoin * User.Wallet.Litecoin; var BitcoinCash = Coins.Where(c => c.Name.Contains(CurrencyNames[6])).First().Price; TotalBalanceUSD += BitcoinCash * User.Wallet.BitcoinCash; var BinanceCoin = Coins.Where(c => c.Name.Contains(CurrencyNames[7])).First().Price; TotalBalanceUSD += BinanceCoin * User.Wallet.BinanceCoin; var Stellar = Coins.Where(c => c.Name.Contains(CurrencyNames[8])).First().Price; TotalBalanceUSD += Stellar * User.Wallet.Stellar; var Tether = Coins.Where(c => c.Name.Contains(CurrencyNames[9])).First().Price; TotalBalanceUSD += Tether * User.Wallet.Tether; var Cardano = Coins.Where(c => c.Name.Contains(CurrencyNames[10])).First().Price; TotalBalanceUSD += Cardano * User.Wallet.Cardano; var TRON = Coins.Where(c => c.Name.Contains(CurrencyNames[11])).First().Price; TotalBalanceUSD += TRON * User.Wallet.TRON; var BitcoinSV = Coins.Where(c => c.Name.Contains(CurrencyNames[12])).First().Price; TotalBalanceUSD += BitcoinSV * User.Wallet.BitcoinSV; var Dash = Coins.Where(c => c.Name.Contains(CurrencyNames[13])).First().Price; TotalBalanceUSD += Dash * User.Wallet.Dash; var Monero = Coins.Where(c => c.Name.Contains(CurrencyNames[14])).First().Price; TotalBalanceUSD += Monero * User.Wallet.Monero; var IOTA = Coins.Where(c => c.Name.Contains(CurrencyNames[15])).First().Price; TotalBalanceUSD += IOTA * User.Wallet.IOTA; var Maker = Coins.Where(c => c.Name.Contains(CurrencyNames[16])).First().Price; TotalBalanceUSD += Maker * User.Wallet.Maker; var Tezos = Coins.Where(c => c.Name.Contains(CurrencyNames[17])).First().Price; TotalBalanceUSD += Tezos * User.Wallet.Tezos; var Ontology = Coins.Where(c => c.Name.Contains(CurrencyNames[18])).First().Price; TotalBalanceUSD += Ontology * User.Wallet.Ontology; var NEO = Coins.Where(c => c.Name.Contains(CurrencyNames[19])).First().Price; TotalBalanceUSD += NEO * User.Wallet.NEO; var EthereumClassic = Coins.Where(c => c.Name.Contains(CurrencyNames[20])).First().Price; TotalBalanceUSD += EthereumClassic * User.Wallet.EthereumClassic; var NEM = Coins.Where(c => c.Name.Contains(CurrencyNames[21])).First().Price; TotalBalanceUSD += NEM * User.Wallet.NEM; var Zcash = Coins.Where(c => c.Name.Contains(CurrencyNames[22])).First().Price; TotalBalanceUSD += Zcash * User.Wallet.Zcash; var HuobiToken = Coins.Where(c => c.Name.Contains(CurrencyNames[23])).First().Price; TotalBalanceUSD += HuobiToken * User.Wallet.HuobiToken; var VeChain = Coins.Where(c => c.Name.Contains(CurrencyNames[24])).First().Price; TotalBalanceUSD += VeChain * User.Wallet.VeChain; var Waves = Coins.Where(c => c.Name.Contains(CurrencyNames[25])).First().Price; TotalBalanceUSD += Waves * User.Wallet.Waves; var Qtum = Coins.Where(c => c.Name.Contains(CurrencyNames[26])).First().Price; TotalBalanceUSD += Qtum * User.Wallet.Qtum; var OmiseGO = Coins.Where(c => c.Name.Contains(CurrencyNames[27])).First().Price; TotalBalanceUSD += OmiseGO * User.Wallet.OmiseGO; var Dogecoin = Coins.Where(c => c.Name.Contains(CurrencyNames[28])).First().Price; TotalBalanceUSD += Dogecoin * User.Wallet.Dogecoin; var USDCoin = Coins.Where(c => c.Name.Contains(CurrencyNames[29])).First().Price; TotalBalanceUSD += USDCoin * User.Wallet.USDCoin; var BitcoinGold = Coins.Where(c => c.Name.Contains(CurrencyNames[30])).First().Price; TotalBalanceUSD += BitcoinGold * User.Wallet.BitcoinGold; var MaximineCoin = Coins.Where(c => c.Name.Contains(CurrencyNames[31])).First().Price; TotalBalanceUSD += MaximineCoin * User.Wallet.MaximineCoin; var Lisk = Coins.Where(c => c.Name.Contains(CurrencyNames[32])).First().Price; TotalBalanceUSD += Lisk * User.Wallet.Lisk; var TrueUSD = Coins.Where(c => c.Name.Contains(CurrencyNames[33])).First().Price; TotalBalanceUSD += TrueUSD * User.Wallet.TrueUSD; var BitTorrent = Coins.Where(c => c.Name.Contains(CurrencyNames[34])).First().Price; TotalBalanceUSD += BitTorrent * User.Wallet.BitTorrent; var Ravencoin = Coins.Where(c => c.Name.Contains(CurrencyNames[35])).First().Price; TotalBalanceUSD += Ravencoin * User.Wallet.Ravencoin; var IOST = Coins.Where(c => c.Name.Contains(CurrencyNames[36])).First().Price; TotalBalanceUSD += IOST * User.Wallet.IOST; var Decred = Coins.Where(c => c.Name.Contains(CurrencyNames[37])).First().Price; TotalBalanceUSD += Decred * User.Wallet.Decred; var Chainlink = Coins.Where(c => c.Name.Contains(CurrencyNames[38])).First().Price; TotalBalanceUSD += Chainlink * User.Wallet.Chainlink; var Zilliqa = Coins.Where(c => c.Name.Contains(CurrencyNames[39])).First().Price; TotalBalanceUSD += Zilliqa * User.Wallet.Zilliqa; var Augur = Coins.Where(c => c.Name.Contains(CurrencyNames[40])).First().Price; TotalBalanceUSD += Augur * User.Wallet.Augur; var ICON = Coins.Where(c => c.Name.Contains(CurrencyNames[41])).First().Price; TotalBalanceUSD += ICON * User.Wallet.ICON; var BitShares = Coins.Where(c => c.Name.Contains(CurrencyNames[42])).First().Price; TotalBalanceUSD += BitShares * User.Wallet.BitShares; var Holo = Coins.Where(c => c.Name.Contains(CurrencyNames[43])).First().Price; TotalBalanceUSD += Holo * User.Wallet.Holo; var Verge = Coins.Where(c => c.Name.Contains(CurrencyNames[44])).First().Price; TotalBalanceUSD += Verge * User.Wallet.Verge; var DigiByte = Coins.Where(c => c.Name.Contains(CurrencyNames[45])).First().Price; TotalBalanceUSD += DigiByte * User.Wallet.DigiByte; var Nano = Coins.Where(c => c.Name.Contains(CurrencyNames[46])).First().Price; TotalBalanceUSD += Nano * User.Wallet.Nano; var Steem = Coins.Where(c => c.Name.Contains(CurrencyNames[47])).First().Price; TotalBalanceUSD += Steem * User.Wallet.Steem; var Bytecoin = Coins.Where(c => c.Name.Contains(CurrencyNames[48])).First().Price; TotalBalanceUSD += Bytecoin * User.Wallet.Bytecoin; var BitcoinDiamond = Coins.Where(c => c.Name.Contains(CurrencyNames[49])).First().Price; TotalBalanceUSD += BitcoinDiamond * User.Wallet.BitcoinDiamond; var Aeternity = Coins.Where(c => c.Name.Contains(CurrencyNames[50])).First().Price; TotalBalanceUSD += Aeternity * User.Wallet.Aeternity; return(TotalBalanceUSD); }
private void TaskLoop() { while (m_running) { try { var db = new SiteDbContext(); if (db.LimitOrders.Count() == 0) { return; } var Coins = CoinValues.GetValues(); var Orders = db.LimitOrders.OrderByDescending(order => order.OrderDate).ToList(); foreach (var order in Orders.ToList()) { Coin coin = Coins.Where(c => c.Name.Contains(order.Currency)).First(); Coin Bitcoin = Coins.Where(c => c.Name.Contains("Bitcoin")).First(); decimal CoinBtcPrice = decimal.Round((coin.Price / Bitcoin.Price), 8); if (CoinBtcPrice == decimal.Round(order.AtPrice, 8)) { //Do ORDER var User = db.Users.Find(order.User.Id); if (order.OrderType == "Buy") { User.Wallet[order.Currency.Replace(" ", string.Empty)] += order.Amount; db.LimitOrders.Remove(order); Orders.Remove(order); Transaction transaction = new Transaction() { Type = "Bought", Currency = coin.Name, Amount = order.Amount, CurrencyPrice = coin.Price, TotalUSD = order.Amount * coin.Price, Date = DateTime.Now, User = User }; db.Transactions.Add(transaction); db.SaveChanges(); } ; if (order.OrderType == "Sell") { User.Balance += (CoinBtcPrice * order.Amount); db.LimitOrders.Remove(order); Orders.Remove(order); Transaction transaction = new Transaction() { Type = "Sold", Currency = coin.Name, Amount = order.Amount, CurrencyPrice = coin.Price, TotalUSD = order.Amount * coin.Price, Date = DateTime.Now, User = User }; db.Transactions.Add(transaction); db.SaveChanges(); } ; } } } catch (Exception e) { } Thread.Sleep(m_interval); } }
public ActionResult Buy(string amount, string name) { decimal d; if (!decimal.TryParse(amount, out d)) { return(View("Index")); } var userId = User.Identity.GetUserId(); decimal bought = decimal.Parse(amount, CultureInfo.InvariantCulture); decimal currencyPrice = CoinValues.GetValues().Where(v => v.Name == name).First().Price; decimal bitcoin = CoinValues.GetBtcValue().Price; decimal boughtPrice = bought * currencyPrice; decimal btcPrice = boughtPrice / bitcoin; using (var db = new SiteDbContext()) { var user = db.Users.Find(userId); var userBTC = user.Balance; if (userBTC < btcPrice || btcPrice < 0) { return(View("Index")); } user.Wallet[name.Replace(" ", string.Empty)] += bought; user.Balance -= btcPrice; //add Transaction var transaction = new Transaction() { Amount = bought, Currency = name, Date = DateTime.Now, User = user, Type = "Bought", CurrencyPrice = currencyPrice, TotalUSD = bought * currencyPrice }; db.Transactions.Add(transaction); db.SaveChanges(); //Request.UrlReferrer.PathAndQuery //string Data = "{\"name\":\"Joe\"}"; var Data = Newtonsoft.Json.JsonConvert.SerializeObject(new { CurrencyCurrentPrice = currencyPrice, CurrencyBalance = user.Wallet[name.Replace(" ", string.Empty)], UserBtcBalance = user.Balance, UserUsdBalance = user.Balance * CoinValues.GetBtcValue().Price }); return(Json(Data, JsonRequestBehavior.AllowGet)); } }