public PanelController(ApplicationDbContext context, IConfiguration configuration) { dbContext = context; coinApi = new CoinApi(configuration); ViewBag.Selected = "Investors"; ViewData["Section"] = "Investors"; }
public PortfolioController(ApplicationDbContext context, IConfiguration configuration) { dbContext = context; coinApi = new CoinApi(configuration); ViewBag.Selected = "Portfolio"; ViewData["Section"] = "Portfolio"; }
private async Task UpdateCurrencyList() { using (var scope = _scopeFactory.CreateScope()) { var dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var coinApi = new CoinApi(_configuration); var allCurrencies = dbContext.Currencies.ToList(); if (allCurrencies.Count == 0) { allCurrencies = await coinApi.GetAllAssets(); dbContext.Currencies.AddRange(allCurrencies); dbContext.SaveChanges(); } else { var lastDate = allCurrencies.First().Date; if (DateTime.Now - lastDate < TimeSpan.FromDays(3)) { allCurrencies = await coinApi.GetAllAssets(); dbContext.Currencies.UpdateRange(allCurrencies); dbContext.SaveChanges(); } } } }
public IActionResult Crypto() { CoinApi bitcoinAPI = new CoinApi(); ViewBag.bitcoin = bitcoinAPI.getPrice(); bitcoinAPI.getPrice(); return(View()); }
public async Task CoinApi_GetCurrentEthPrice() { var api = new CoinApi(); var price = await api.GetSymbolUsdPrice("ETH"); Assert.IsTrue(price > 0); }
private async Task UpdateInfoFromApi() { using (var scope = _scopeFactory.CreateScope()) { _loggerFactory.AddFile(Path.Combine(Directory.GetCurrentDirectory(), "logger.txt")); var logger = _loggerFactory.CreateLogger("FileLogger"); var context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var coinApi = new CoinApi(_configuration); var assets = context.Assets.Where(a => a.Name != "USD").GroupBy(al => al.ShortName).Select(an => an.First()).ToList(); foreach (var asset in assets) { try { var rate = await coinApi.GetCurrencyRateToUsd(asset.ShortName); asset.Price = rate.Rate; context.Assets.Update(asset); var currency = context.Currencies.FirstOrDefault(c => c.ShortName == asset.ShortName); if (currency != null) { currency.Rate = rate.Rate; context.Currencies.Update(currency); } context.CurrencyRates.Add(rate); logger.LogInformation(String.Format("========= {0} =========== {1} =========", DateTime.Now, "Update rate for " + currency.ShortName)); } catch (Exception e) { Console.WriteLine(e); logger.LogInformation(String.Format("========= {0} =========== {1} =========", DateTime.Now, "Failed to update rates!")); } } context.SaveChanges(); } }
public MiningPool AddNewPool(CoinApi.Data.CoinInformation coin, string url, string user, string pass) { Engine.Data.Configuration.Coin coinConfig = EngineConfiguration.CoinConfigurations.SingleOrDefault(c => c.PoolGroup.Id.Equals(coin.Symbol, StringComparison.OrdinalIgnoreCase)); if (coinConfig == null) { coinConfig = new Engine.Data.Configuration.Coin(); var algorithm = coin.Algorithm; //we don't want the FullName KnownAlgorithm knownAlgorithm = KnownAlgorithms.Algorithms.SingleOrDefault(a => a.FullName.Equals(algorithm, StringComparison.OrdinalIgnoreCase)); if (knownAlgorithm != null) algorithm = knownAlgorithm.Name; coinConfig.PoolGroup = new Engine.Data.PoolGroup { Algorithm = algorithm, Id = coin.Symbol, Kind = coin.Symbol.Contains(':') ? Engine.Data.PoolGroup.PoolGroupKind.MultiCoin : Engine.Data.PoolGroup.PoolGroupKind.SingleCoin, Name = coin.Name }; EngineConfiguration.CoinConfigurations.Add(coinConfig); } Uri uri = new Uri(url); Xgminer.Data.MiningPool poolConfig = new Xgminer.Data.MiningPool { Host = uri.GetComponents(UriComponents.AbsoluteUri & ~UriComponents.Port, UriFormat.UriEscaped), Port = uri.Port, Password = pass, Username = user }; coinConfig.Pools.Add(poolConfig); EngineConfiguration.SaveCoinConfigurations(); return poolConfig; }
public Reporting(Email email, CoinApi coinApi, ILogger logger) { _email = email; _coinApi = coinApi; _logger = logger; }
private async Task UpdateDatabase() { using (var scope = _scopeFactory.CreateScope()) { var coinApi = new CoinApi(_configuration); var dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var navs = dbContext.NavHistories.ToList(); if (navs.Count > 0) { var latestNav = navs.Last(); var timeDiff = latestNav.Date - DateTime.Now; if (Math.Abs(timeDiff.Hours) < 3) { return; } } var assets = dbContext.Assets.ToList(); var investors = await dbContext.Investors.ToListAsync(); if (investors.Count == 0) { return; } var sum = assets.Sum(a => a.Price * a.Quantity); var totalShares = investors.Sum(investor => investor.SharesReceived); var time = DateTime.Now; var nav = new NavHistory { Date = time, Value = sum / totalShares }; var rate = await coinApi.GetCurrencyRateToUsd("BTC"); var btc = new BtcHistory { Date = time, Value = rate.Rate }; dbContext.NavHistories.Add(nav); dbContext.BtcHistories.Add(btc); dbContext.SaveChanges(); //if (!assets.Exists(a => a.ShortName == "BTC")) //{ // try // { // var currency = dbContext.Currencies.FirstOrDefault(c => c.ShortName == "BTC"); // if (currency != null) // { // currency.Rate = rate.Rate; // dbContext.Currencies.Update(currency); // } // dbContext.CurrencyRates.Add(rate); // } // catch (Exception e) // { // Console.WriteLine(e); // } //} } }