Exemplo n.º 1
0
 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();
                    }
                }
            }
        }
Exemplo n.º 4
0
        public IActionResult Crypto()
        {
            CoinApi bitcoinAPI = new CoinApi();

            ViewBag.bitcoin = bitcoinAPI.getPrice();
            bitcoinAPI.getPrice();
            return(View());
        }
Exemplo n.º 5
0
        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();
            }
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
 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);
                //    }
                //}
            }
        }